Skip to content

Commit 89a6fa1

Browse files
sys-igcigcbot
authored andcommitted
[Autobackout][FunctionalRegression]Revert of change: ce9c6e7: Remove tracking of bindlessOffset for images
In case of bindless images, NEO runtime passes bindless offset in image arg of kernel. This bindless offset doesn't need to be tracked because arg tracking in OCLBIConverter pass is only needed to find image's BTI, which isn't used with bindless as it's the bindless offset that is used to find the image's surface state instead of values stored in the Binding Table. This commit partially removes the tracking.
1 parent 0fccd13 commit 89a6fa1

11 files changed

+56
-58
lines changed

IGC/Compiler/Optimizer/OCLBIUtils.cpp

+14-16
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ SPDX-License-Identifier: MIT
2020
#include "Probe/Assertion.h"
2121
#include "IGC/common/StringMacros.hpp"
2222
#include <llvm/Support/Casting.h>
23-
#include "IGC/Compiler/CISACodeGen/messageEncoding.hpp"
2423

2524
using namespace llvm;
2625
using namespace IGC;
@@ -294,27 +293,26 @@ BufferType CImagesBI::CImagesUtils::getImageType(ParamMap* pParamMap, CallInst*
294293

295294
void CImagesBI::createGetBufferPtr()
296295
{
297-
if (m_pCodeGenContext->getModuleMetaData()->UseBindlessImage)
298-
{
299-
// If bindless image is preferred, don't create GetBufferPtr, instead just map the bindless pointer
300-
Value* pImg = m_pCallInst->getOperand(0);
301-
ConstantInt* bindlessIndex = ConstantInt::get(m_pIntType, BINDLESS_BTI);
302-
uint32_t addrSpace = EncodeAS4GFXResource(*bindlessIndex, BINDLESS);
303-
Type* ptrTy = llvm::PointerType::get(m_pFloatType, addrSpace);
304-
305-
Value* basePointer = isa<IntegerType>(pImg->getType()) ?
306-
BitCastInst::CreateBitOrPointerCast(pImg, ptrTy, "bindless_img", m_pCallInst) :
307-
BitCastInst::CreatePointerCast(pImg, ptrTy, "bindless_img", m_pCallInst);
308-
m_args.push_back(basePointer);
309-
return;
310-
}
311-
312296
Value* pImg = nullptr;
313297
ConstantInt* imageIndex = CImagesUtils::getImageIndex(m_pParamMap, m_pCallInst, 0, pImg);
314298
BufferType bufType = CImagesUtils::getImageType(m_pParamMap, m_pCallInst, 0);
315299
unsigned int addressSpace = IGC::EncodeAS4GFXResource(*imageIndex, bufType);
316300
Type* ptrTy = llvm::PointerType::get(m_pFloatType, addressSpace);
317301

302+
if (bufType == BufferType::BINDLESS)
303+
{
304+
// If bindless image is preferred, don't create GetBufferPtr, instead just map the bindless pointer
305+
auto modMD = m_pCodeGenContext->getModuleMetaData();
306+
if (modMD->UseBindlessImage)
307+
{
308+
Value* basePointer = isa<IntegerType>(pImg->getType()) ?
309+
BitCastInst::CreateBitOrPointerCast(pImg, ptrTy, "bindless_img", m_pCallInst) :
310+
BitCastInst::CreatePointerCast(pImg, ptrTy, "bindless_img", m_pCallInst);
311+
m_args.push_back(basePointer);
312+
return;
313+
}
314+
}
315+
318316
Function* pFuncGetBufferPtr = getFunctionDeclaration(GenISAIntrinsic::GenISA_GetBufferPtr, ptrTy);
319317

320318
//%base_ptr = call float* @llvm.GenISA.GetBufferPtr(i32 %bufIdx, i32 %type)

IGC/Compiler/tests/OCLBIConverter/get_image_prop-typed-pointers.ll

+11-10
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
define spir_kernel void @kernel_1d_array(%spirv.Image._void_0_0_1_0_0_0_0 addrspace(1)* %img) {
1919
; CHECK-LABEL: define spir_kernel void @kernel_1d_array(
2020
; CHECK-NOT: __builtin_IB_get_image1d_array_size
21-
; CHECK: [[BINDLESS_IMG_1D:%.*]] = inttoptr i32 %1 to float addrspace(393468)*
22-
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468f32(float addrspace(393468)* [[BINDLESS_IMG_1D]], i32 0)
21+
; CHECK: [[BINDLESS_IMG_1D:%.*]] = addrspacecast %spirv.Image._void_0_0_1_0_0_0_0 addrspace(1)* %img to float addrspace(393216)*
22+
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216f32(float addrspace(393216)* [[BINDLESS_IMG_1D]], i32 0)
2323
; CHECK-NEXT: extractelement <4 x i32> [[TMP_1D]], i32 1
2424
%data = ptrtoint %spirv.Image._void_0_0_1_0_0_0_0 addrspace(1)* %img to i64
2525
%1 = trunc i64 %data to i32
@@ -30,8 +30,8 @@ define spir_kernel void @kernel_1d_array(%spirv.Image._void_0_0_1_0_0_0_0 addrsp
3030
define spir_kernel void @kernel_2d_array(%spirv.Image._void_1_0_1_0_0_0_0 addrspace(1)* %img) {
3131
; CHECK-LABEL: define spir_kernel void @kernel_2d_array(
3232
; CHECK-NOT: __builtin_IB_get_image1d_array_size
33-
; CHECK: [[BINDLESS_IMG_1D:%.*]] = inttoptr i32 %1 to float addrspace(393468)*
34-
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468f32(float addrspace(393468)* [[BINDLESS_IMG_1D]], i32 0)
33+
; CHECK: [[BINDLESS_IMG_1D:%.*]] = addrspacecast %spirv.Image._void_1_0_1_0_0_0_0 addrspace(1)* %img to float addrspace(393216)*
34+
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216f32(float addrspace(393216)* [[BINDLESS_IMG_1D]], i32 0)
3535
; CHECK-NEXT: extractelement <4 x i32> [[TMP_1D]], i32 2
3636
%data = ptrtoint %spirv.Image._void_1_0_1_0_0_0_0 addrspace(1)* %img to i64
3737
%1 = trunc i64 %data to i32
@@ -41,19 +41,20 @@ define spir_kernel void @kernel_2d_array(%spirv.Image._void_1_0_1_0_0_0_0 addrsp
4141

4242
define spir_kernel void @kernel_3d(%spirv.Image._void_2_0_0_0_0_0_0 addrspace(1)* %img) {
4343
; CHECK-LABEL: define spir_kernel void @kernel_3d(
44+
; CHECK-SAME: [[SPIRV_IMAGE__VOID_2_0_0_0_0_0_0:%.*]] addrspace(1)* [[IMG:%.*]]) {
4445
%data = ptrtoint %spirv.Image._void_2_0_0_0_0_0_0 addrspace(1)* %img to i64
4546
%1 = trunc i64 %data to i32
4647
; CHECK-NOT: __builtin_IB_get_image_width
4748
; CHECK-NOT: __builtin_IB_get_image_height
4849
; CHECK-NOT: __builtin_IB_get_image_height
49-
; CHECK: [[BINDLESS_IMG:%.*]] = inttoptr i32 %1 to float addrspace(393468)*
50-
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468f32(float addrspace(393468)* [[BINDLESS_IMG]], i32 0)
50+
; CHECK: [[BINDLESS_IMG:%.*]] = addrspacecast [[SPIRV_IMAGE__VOID_2_0_0_0_0_0_0]] addrspace(1)* [[IMG]] to float addrspace(393216)*
51+
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216f32(float addrspace(393216)* [[BINDLESS_IMG]], i32 0)
5152
; CHECK-NEXT: extractelement <4 x i32> [[TMP1]], i32 0
52-
; CHECK-NEXT: [[BINDLESS_IMG1:%.*]] = inttoptr i32 %1 to float addrspace(393468)*
53-
; CHECK-NEXT: [[TMP2:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468f32(float addrspace(393468)* [[BINDLESS_IMG1]], i32 0)
53+
; CHECK-NEXT: [[BINDLESS_IMG1:%.*]] = addrspacecast [[SPIRV_IMAGE__VOID_2_0_0_0_0_0_0]] addrspace(1)* [[IMG]] to float addrspace(393216)*
54+
; CHECK-NEXT: [[TMP2:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216f32(float addrspace(393216)* [[BINDLESS_IMG1]], i32 0)
5455
; CHECK-NEXT: extractelement <4 x i32> [[TMP2]], i32 1
55-
; CHECK-NEXT: [[BINDLESS_IMG2:%.*]] = inttoptr i32 %1 to float addrspace(393468)*
56-
; CHECK-NEXT: [[TMP3:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468f32(float addrspace(393468)* [[BINDLESS_IMG2]], i32 0)
56+
; CHECK-NEXT: [[BINDLESS_IMG2:%.*]] = addrspacecast [[SPIRV_IMAGE__VOID_2_0_0_0_0_0_0]] addrspace(1)* [[IMG]] to float addrspace(393216)*
57+
; CHECK-NEXT: [[TMP3:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216f32(float addrspace(393216)* [[BINDLESS_IMG2]], i32 0)
5758
; CHECK-NEXT: extractelement <4 x i32> [[TMP3]], i32 2
5859
%call = call spir_func i32 @__builtin_IB_get_image_width(i32 %1)
5960
%call1 = call spir_func i32 @__builtin_IB_get_image_height(i32 %1)

IGC/Compiler/tests/OCLBIConverter/get_image_prop.ll

+11-10
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@
1919
define spir_kernel void @kernel_1d_array(ptr addrspace(1) %img) {
2020
; CHECK-LABEL: define spir_kernel void @kernel_1d_array(
2121
; CHECK-NOT: __builtin_IB_get_image1d_array_size
22-
; CHECK: [[BINDLESS_IMG_1D:%.*]] = inttoptr i32 %1 to ptr addrspace(393468)
23-
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468(ptr addrspace(393468) [[BINDLESS_IMG_1D]], i32 0)
22+
; CHECK: [[BINDLESS_IMG_1D:%.*]] = addrspacecast ptr addrspace(1) %img to ptr addrspace(393216)
23+
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216(ptr addrspace(393216) [[BINDLESS_IMG_1D]], i32 0)
2424
; CHECK-NEXT: extractelement <4 x i32> [[TMP_1D]], i32 1
2525
%data = ptrtoint ptr addrspace(1) %img to i64
2626
%1 = trunc i64 %data to i32
@@ -31,8 +31,8 @@ define spir_kernel void @kernel_1d_array(ptr addrspace(1) %img) {
3131
define spir_kernel void @kernel_2d_array(ptr addrspace(1) %img) {
3232
; CHECK-LABEL: define spir_kernel void @kernel_2d_array(
3333
; CHECK-NOT: __builtin_IB_get_image1d_array_size
34-
; CHECK: [[BINDLESS_IMG_1D:%.*]] = inttoptr i32 %1 to ptr addrspace(393468)
35-
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468(ptr addrspace(393468) [[BINDLESS_IMG_1D]], i32 0)
34+
; CHECK: [[BINDLESS_IMG_1D:%.*]] = addrspacecast ptr addrspace(1) %img to ptr addrspace(393216)
35+
; CHECK-NEXT: [[TMP_1D:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216(ptr addrspace(393216) [[BINDLESS_IMG_1D]], i32 0)
3636
; CHECK-NEXT: extractelement <4 x i32> [[TMP_1D]], i32 2
3737
%data = ptrtoint ptr addrspace(1) %img to i64
3838
%1 = trunc i64 %data to i32
@@ -42,19 +42,20 @@ define spir_kernel void @kernel_2d_array(ptr addrspace(1) %img) {
4242

4343
define spir_kernel void @kernel_3d(ptr addrspace(1) %img) {
4444
; CHECK-LABEL: define spir_kernel void @kernel_3d(
45+
; CHECK-SAME: ptr addrspace(1) [[IMG:%.*]]) {
4546
%data = ptrtoint ptr addrspace(1) %img to i64
4647
%1 = trunc i64 %data to i32
4748
; CHECK-NOT: __builtin_IB_get_image_width
4849
; CHECK-NOT: __builtin_IB_get_image_height
4950
; CHECK-NOT: __builtin_IB_get_image_height
50-
; CHECK: [[BINDLESS_IMG:%.*]] = inttoptr i32 %1 to ptr addrspace(393468)
51-
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468(ptr addrspace(393468) [[BINDLESS_IMG]], i32 0)
51+
; CHECK: [[BINDLESS_IMG:%.*]] = addrspacecast ptr addrspace(1) [[IMG]] to ptr addrspace(393216)
52+
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216(ptr addrspace(393216) [[BINDLESS_IMG]], i32 0)
5253
; CHECK-NEXT: extractelement <4 x i32> [[TMP1]], i32 0
53-
; CHECK-NEXT: [[BINDLESS_IMG1:%.*]] = inttoptr i32 %1 to ptr addrspace(393468)
54-
; CHECK-NEXT: [[TMP2:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468(ptr addrspace(393468) [[BINDLESS_IMG1]], i32 0)
54+
; CHECK-NEXT: [[BINDLESS_IMG1:%.*]] = addrspacecast ptr addrspace(1) [[IMG]] to ptr addrspace(393216)
55+
; CHECK-NEXT: [[TMP2:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216(ptr addrspace(393216) [[BINDLESS_IMG1]], i32 0)
5556
; CHECK-NEXT: extractelement <4 x i32> [[TMP2]], i32 1
56-
; CHECK-NEXT: [[BINDLESS_IMG2:%.*]] = inttoptr i32 %1 to ptr addrspace(393468)
57-
; CHECK-NEXT: [[TMP3:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393468(ptr addrspace(393468) [[BINDLESS_IMG2]], i32 0)
57+
; CHECK-NEXT: [[BINDLESS_IMG2:%.*]] = addrspacecast ptr addrspace(1) [[IMG]] to ptr addrspace(393216)
58+
; CHECK-NEXT: [[TMP3:%.*]] = call <4 x i32> @llvm.genx.GenISA.resinfoptr.p393216(ptr addrspace(393216) [[BINDLESS_IMG2]], i32 0)
5859
; CHECK-NEXT: extractelement <4 x i32> [[TMP3]], i32 2
5960
%call = call spir_func i32 @__builtin_IB_get_image_width(i32 %1)
6061
%call1 = call spir_func i32 @__builtin_IB_get_image_height(i32 %1)

IGC/Compiler/tests/OCLBIConverter/inline_sampler_bindless-typed-pointers.ll

+2-3
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@ entry:
2121
; CHECK: [[ZEXT:%[0-9]+]] = zext i32 %inlineSampler to i64
2222
; CHECK: [[OR:%[0-9]+]] = or i64 [[ZEXT]], 1
2323
; CHECK: [[TRUNC:%[0-9]+]] = trunc i64 [[OR]] to i32
24-
; CHECK: [[TRUNC_IMG:%[0-9]+]] = trunc i64 %1 to i32
25-
; CHECK: %bindless_img = inttoptr i32 [[TRUNC_IMG]] to float addrspace(393468)*
24+
; CHECK: %bindless_img = addrspacecast %spirv.Image._void_1_0_0_0_0_0_0 addrspace(1)* %srcImg to float addrspace(393218)*
2625
; CHECK: %bindless_sampler = inttoptr i32 [[TRUNC]] to float addrspace(655360)*
27-
; CHECK: = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610f32.p393468f32.p655360f32(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, float addrspace(196610)* undef, float addrspace(393468)* %bindless_img, float addrspace(655360)* %bindless_sampler, i32 0, i32 0, i32 0)
26+
; CHECK: = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610f32.p393218f32.p655360f32(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, float addrspace(196610)* undef, float addrspace(393218)* %bindless_img, float addrspace(655360)* %bindless_sampler, i32 0, i32 0, i32 0)
2827

2928
%0 = inttoptr i64 16 to %spirv.Sampler addrspace(2)*
3029
%1 = ptrtoint %spirv.Image._void_1_0_0_0_0_0_0 addrspace(1)* %srcImg to i64

IGC/Compiler/tests/OCLBIConverter/inline_sampler_bindless.ll

+2-3
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@ entry:
2222
; CHECK: [[ZEXT:%[0-9]+]] = zext i32 %inlineSampler to i64
2323
; CHECK: [[OR:%[0-9]+]] = or i64 [[ZEXT]], 1
2424
; CHECK: [[TRUNC:%[0-9]+]] = trunc i64 [[OR]] to i32
25-
; CHECK: [[TRUNC_IMG:%[0-9]+]] = trunc i64 %1 to i32
26-
; CHECK: %bindless_img = inttoptr i32 [[TRUNC_IMG]] to ptr addrspace(393468)
25+
; CHECK: %bindless_img = addrspacecast ptr addrspace(1) %srcImg to ptr addrspace(393218)
2726
; CHECK: %bindless_sampler = inttoptr i32 [[TRUNC]] to ptr addrspace(655360)
28-
; CHECK: = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610.p393468.p655360(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196610) undef, ptr addrspace(393468) %bindless_img, ptr addrspace(655360) %bindless_sampler, i32 0, i32 0, i32 0)
27+
; CHECK: = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610.p393218.p655360(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196610) undef, ptr addrspace(393218) %bindless_img, ptr addrspace(655360) %bindless_sampler, i32 0, i32 0, i32 0)
2928

3029
%0 = inttoptr i64 16 to ptr addrspace(2)
3130
%1 = ptrtoint ptr addrspace(1) %srcImg to i64

IGC/Compiler/tests/OCLBIConverter/ocl_bindless_sampler_2d-typed-pointers.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ entry:
2020
%conv = trunc i64 %0 to i32
2121
%conv2 = trunc i64 %1 to i32
2222

23-
; CHECK: %bindless_img = inttoptr i32 %conv to float addrspace(393468)*
23+
; CHECK: %bindless_img = addrspacecast %spirv.Image._void_1_0_0_0_0_0_0 addrspace(1)* %img to float addrspace(393218)*
2424
; CHECK-NEXT: %bindless_sampler = addrspacecast %spirv.Sampler addrspace(2)* %sampler to float addrspace(655360)*
25-
; CHECK-NEXT: call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610f32.p393468f32.p655360f32(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, float addrspace(196610)* undef, float addrspace(393468)* %bindless_img, float addrspace(655360)* %bindless_sampler, i32 0, i32 0, i32 0)
25+
; CHECK-NEXT: call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610f32.p393218f32.p655360f32(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, float addrspace(196610)* undef, float addrspace(393218)* %bindless_img, float addrspace(655360)* %bindless_sampler, i32 0, i32 0, i32 0)
2626

2727
%call = call spir_func <4 x float> @__builtin_IB_OCL_2d_sample_l(i32 %conv, i32 %conv2, <2 x float> zeroinitializer, float 0.000000e+00)
2828
ret void

IGC/Compiler/tests/OCLBIConverter/ocl_bindless_sampler_2d.ll

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ entry:
2121
%conv = trunc i64 %0 to i32
2222
%conv2 = trunc i64 %1 to i32
2323

24-
; CHECK: %bindless_img = inttoptr i32 %conv to ptr addrspace(393468)
24+
; CHECK: %bindless_img = addrspacecast ptr addrspace(1) %img to ptr addrspace(393218)
2525
; CHECK-NEXT: %bindless_sampler = addrspacecast ptr addrspace(2) %sampler to ptr addrspace(655360)
26-
; CHECK-NEXT: call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610.p393468.p655360(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196610) undef, ptr addrspace(393468) %bindless_img, ptr addrspace(655360) %bindless_sampler, i32 0, i32 0, i32 0)
26+
; CHECK-NEXT: call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196610.p393218.p655360(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196610) undef, ptr addrspace(393218) %bindless_img, ptr addrspace(655360) %bindless_sampler, i32 0, i32 0, i32 0)
2727

2828
%call = call spir_func <4 x float> @__builtin_IB_OCL_2d_sample_l(i32 %conv, i32 %conv2, <2 x float> zeroinitializer, float 0.000000e+00)
2929
ret void

IGC/Compiler/tests/OCLBIConverter/sampled_image_handle_2d-typed-pointers.ll

+4-4
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@ entry:
3333
%conv2 = trunc i64 %7 to i32
3434

3535
; CHECK: [[OR:%.*]] = or i64 %sampler_offset, 1
36-
; CHECK: %bindless_img = inttoptr i32 %conv to float addrspace(393468)*
36+
; CHECK: %bindless_img = inttoptr i64 %__SYCLKernel.1.copyload to float addrspace(393216)*
3737
; CHECK-NEXT: %bindless_sampler = inttoptr i64 [[OR]] to float addrspace(655360)*
38-
; CHECK-NEXT: %call1 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608f32.p393468f32.p655360f32(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, float addrspace(196608)* undef, float addrspace(393468)* %bindless_img, float addrspace(655360)* %bindless_sampler, i32 0, i32 0, i32 0)
38+
; CHECK-NEXT: %call1 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608f32.p393216f32.p655360f32(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, float addrspace(196608)* undef, float addrspace(393216)* %bindless_img, float addrspace(655360)* %bindless_sampler, i32 0, i32 0, i32 0)
3939

4040
%call = call spir_func <4 x float> @__builtin_IB_OCL_2d_sample_l(i32 %conv, i32 %conv2, <2 x float> zeroinitializer, float 0.000000e+00)
4141
%astype3 = inttoptr i64 %__SYCLKernel.3.copyload to %spirv.Image._void_1_0_0_0_0_0_0 addrspace(1)*
@@ -47,9 +47,9 @@ entry:
4747
%conv4 = trunc i64 %10 to i32
4848

4949
; CHECK: [[OR2:%.*]] = or i64 %sampler_offset{{.*}}, 1
50-
; CHECK: [[IMG2:%bindless_img[0-9]+]] = inttoptr i32 %conv3 to float addrspace(393468)*
50+
; CHECK: [[IMG2:%bindless_img[0-9]+]] = inttoptr i64 %__SYCLKernel.3.copyload to float addrspace(393216)*
5151
; CHECK-NEXT: [[SAMPLER2:%bindless_sampler[0-9]+]] = inttoptr i64 [[OR2]] to float addrspace(655360)*
52-
; CHECK-NEXT: %call26 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608f32.p393468f32.p655360f32(float 0.000000e+00, float %CoordX2, float %CoordY3, float 0.000000e+00, float 0.000000e+00, float addrspace(196608)* undef, float addrspace(393468)* [[IMG2]], float addrspace(655360)* [[SAMPLER2]], i32 0, i32 0, i32 0)
52+
; CHECK-NEXT: %call26 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608f32.p393216f32.p655360f32(float 0.000000e+00, float %CoordX2, float %CoordY3, float 0.000000e+00, float 0.000000e+00, float addrspace(196608)* undef, float addrspace(393216)* [[IMG2]], float addrspace(655360)* [[SAMPLER2]], i32 0, i32 0, i32 0)
5353

5454
%call2 = call spir_func <4 x float> @__builtin_IB_OCL_2d_sample_l(i32 %conv3, i32 %conv4, <2 x float> zeroinitializer, float 0.000000e+00)
5555
ret void

IGC/Compiler/tests/OCLBIConverter/sampled_image_handle_2d.ll

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,9 @@ entry:
3434
%conv2 = trunc i64 %2 to i32
3535

3636
; CHECK: [[OR:%.*]] = or i64 %sampler_offset, 1
37-
; CHECK: %bindless_img = inttoptr i32 %conv to ptr addrspace(393468)
37+
; CHECK: %bindless_img = inttoptr i64 %__SYCLKernel.1.copyload to ptr addrspace(393216)
3838
; CHECK-NEXT: %bindless_sampler = inttoptr i64 [[OR]] to ptr addrspace(655360)
39-
; CHECK-NEXT: %call1 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608.p393468.p655360(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196608) undef, ptr addrspace(393468) %bindless_img, ptr addrspace(655360) %bindless_sampler, i32 0, i32 0, i32 0)
39+
; CHECK-NEXT: %call1 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608.p393216.p655360(float 0.000000e+00, float %CoordX, float %CoordY, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196608) undef, ptr addrspace(393216) %bindless_img, ptr addrspace(655360) %bindless_sampler, i32 0, i32 0, i32 0)
4040

4141
%call = call spir_func <4 x float> @__builtin_IB_OCL_2d_sample_l(i32 %conv, i32 %conv2, <2 x float> zeroinitializer, float 0.000000e+00)
4242
%astype3 = inttoptr i64 %__SYCLKernel.3.copyload to ptr addrspace(1)
@@ -48,9 +48,9 @@ entry:
4848
%conv4 = trunc i64 %5 to i32
4949

5050
; CHECK: [[OR2:%.*]] = or i64 %sampler_offset{{.*}}, 1
51-
; CHECK: [[IMG2:%bindless_img[0-9]+]] = inttoptr i32 %conv3 to ptr addrspace(393468)
51+
; CHECK: [[IMG2:%bindless_img[0-9]+]] = inttoptr i64 %__SYCLKernel.3.copyload to ptr addrspace(393216)
5252
; CHECK-NEXT: [[SAMPLER2:%bindless_sampler[0-9]+]] = inttoptr i64 [[OR2]] to ptr addrspace(655360)
53-
; CHECK-NEXT: %call26 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608.p393468.p655360(float 0.000000e+00, float %CoordX2, float %CoordY3, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196608) undef, ptr addrspace(393468) [[IMG2]], ptr addrspace(655360) [[SAMPLER2]], i32 0, i32 0, i32 0)
53+
; CHECK-NEXT: %call26 = call <4 x float> @llvm.genx.GenISA.sampleLptr.v4f32.f32.p196608.p393216.p655360(float 0.000000e+00, float %CoordX2, float %CoordY3, float 0.000000e+00, float 0.000000e+00, ptr addrspace(196608) undef, ptr addrspace(393216) [[IMG2]], ptr addrspace(655360) [[SAMPLER2]], i32 0, i32 0, i32 0)
5454

5555
%call2 = call spir_func <4 x float> @__builtin_IB_OCL_2d_sample_l(i32 %conv3, i32 %conv4, <2 x float> zeroinitializer, float 0.000000e+00)
5656
ret void

0 commit comments

Comments
 (0)