Skip to content

Commit 243091d

Browse files
svenvhsys-ce-bb
authored andcommitted
Factor out isOCLDepthImage; NFC (#3285)
Ensure it handles `TargetExtType`s in preparation of a future change. Original commit: KhronosGroup/SPIRV-LLVM-Translator@a7eaac86147f251
1 parent 5bb07d1 commit 243091d

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

llvm-spirv/lib/SPIRV/SPIRVToOCL.cpp

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -761,6 +761,22 @@ SPIRVToOCLBase::mutateCallImageOperands(CallInst *CI, StringRef NewFuncName,
761761
return Mutator;
762762
}
763763

764+
static bool isOCLDepthImage(Type *Ty) {
765+
if (auto *TET = dyn_cast<TargetExtType>(Ty)) {
766+
if (TET->getName() != "spirv.Image")
767+
return false;
768+
assert(TET->getNumIntParameters() > 2 &&
769+
"unexpected image TargetExtType parameter count");
770+
return TET->getIntParameter(1);
771+
}
772+
773+
StringRef ImageTypeName;
774+
if (isOCLImageType(Ty, &ImageTypeName))
775+
return ImageTypeName.contains("_depth_");
776+
777+
return false;
778+
}
779+
764780
void SPIRVToOCLBase::visitCallSPIRVImageSampleExplicitLodBuiltIn(CallInst *CI,
765781
Op OC) {
766782
Type *T = CI->getType();
@@ -772,12 +788,8 @@ void SPIRVToOCLBase::visitCallSPIRVImageSampleExplicitLodBuiltIn(CallInst *CI,
772788
CallInst *CallSampledImg = cast<CallInst>(CI->getArgOperand(0));
773789
auto Img = getCallValue(CallSampledImg, 0);
774790
auto Sampler = getCallValue(CallSampledImg, 1);
775-
bool IsDepthImage = false;
791+
const bool IsDepthImage = isOCLDepthImage(Img.second);
776792
Mutator.mapArg(0, [&](Value *SampledImg) {
777-
StringRef ImageTypeName;
778-
if (isOCLImageType(Img.second, &ImageTypeName))
779-
IsDepthImage = ImageTypeName.contains("_depth_");
780-
781793
if (CallSampledImg->hasOneUse()) {
782794
CallSampledImg->replaceAllUsesWith(
783795
PoisonValue::get(CallSampledImg->getType()));

0 commit comments

Comments
 (0)