@@ -1237,8 +1237,10 @@ static const ArBasicKind g_AnyOutputRecordCT[] = {
12371237static const ArBasicKind g_DxHitObjectCT[] = {AR_OBJECT_HIT_OBJECT,
12381238 AR_BASIC_UNKNOWN};
12391239
1240+ #ifdef ENABLE_SPIRV_CODEGEN
12401241static const ArBasicKind g_VKBufferPointerCT[] = {AR_OBJECT_VK_BUFFER_POINTER,
12411242 AR_BASIC_UNKNOWN};
1243+ #endif
12421244
12431245// Basic kinds, indexed by a LEGAL_INTRINSIC_COMPTYPES value.
12441246const ArBasicKind *g_LegalIntrinsicCompTypes[] = {
@@ -1295,7 +1297,9 @@ const ArBasicKind *g_LegalIntrinsicCompTypes[] = {
12951297 g_GroupNodeOutputRecordsCT, // LICOMPTYPE_GROUP_NODE_OUTPUT_RECORDS
12961298 g_ThreadNodeOutputRecordsCT, // LICOMPTYPE_THREAD_NODE_OUTPUT_RECORDS
12971299 g_DxHitObjectCT, // LICOMPTYPE_HIT_OBJECT
1298- g_VKBufferPointerCT, // LICOMPTYPE_VK_BUFFER_POINTER
1300+ #ifdef ENABLE_SPIRV_CODEGEN
1301+ g_VKBufferPointerCT, // LICOMPTYPE_VK_BUFFER_POINTER
1302+ #endif
12991303};
13001304static_assert(
13011305 ARRAYSIZE(g_LegalIntrinsicCompTypes) == LICOMPTYPE_COUNT,
@@ -3587,6 +3591,7 @@ class HLSLExternalSource : public ExternalSemaSource {
35873591 case LICOMPTYPE_HIT_OBJECT:
35883592 paramTypes.push_back(GetBasicKindType(AR_OBJECT_HIT_OBJECT));
35893593 break;
3594+ #ifdef ENABLE_SPIRV_CODEGEN
35903595 case LICOMPTYPE_VK_BUFFER_POINTER: {
35913596 const ArBasicKind *match =
35923597 std::find(g_ArBasicKindsAsTypes,
@@ -3600,6 +3605,7 @@ class HLSLExternalSource : public ExternalSemaSource {
36003605 m_sema->getASTContext().getTypeDeclType(m_objectTypeDecls[index]));
36013606 break;
36023607 }
3608+ #endif
36033609 default:
36043610 DXASSERT(false, "Argument type of intrinsic function is not "
36053611 "supported");
@@ -4856,7 +4862,10 @@ class HLSLExternalSource : public ExternalSemaSource {
48564862 case AR_OBJECT_EMPTY_NODE_OUTPUT_ARRAY:
48574863 case AR_OBJECT_THREAD_NODE_OUTPUT_RECORDS:
48584864 case AR_OBJECT_GROUP_NODE_OUTPUT_RECORDS:
4859- case AR_OBJECT_VK_BUFFER_POINTER: {
4865+ #ifdef ENABLE_SPIRV_CODEGEN
4866+ case AR_OBJECT_VK_BUFFER_POINTER:
4867+ #endif
4868+ {
48604869 const ArBasicKind *match = std::find(
48614870 g_ArBasicKindsAsTypes,
48624871 &g_ArBasicKindsAsTypes[_countof(g_ArBasicKindsAsTypes)], kind);
@@ -5372,8 +5381,10 @@ class HLSLExternalSource : public ExternalSemaSource {
53725381 << type << GetMatrixOrVectorElementType(type);
53735382 }
53745383 return valid;
5384+ #ifdef ENABLE_SPIRV_CODEGEN
53755385 } else if (hlsl::IsVKBufferPointerType(qt)) {
53765386 return true;
5387+ #endif
53775388 } else if (qt->isStructureOrClassType()) {
53785389 const RecordType *recordType = qt->getAs<RecordType>();
53795390 objectKind = ClassifyRecordType(recordType);
@@ -9751,10 +9762,12 @@ bool HLSLExternalSource::CanConvert(SourceLocation loc, Expr *sourceExpr,
97519762 return false;
97529763 }
97539764
9765+ #ifdef ENABLE_SPIRV_CODEGEN
97549766 // Cast vk::BufferPointer to pointer address.
97559767 if (SourceInfo.EltKind == AR_OBJECT_VK_BUFFER_POINTER) {
97569768 return TargetInfo.EltKind == AR_BASIC_UINT64;
97579769 }
9770+ #endif
97589771
97599772 // Cast cbuffer to its result value.
97609773 if ((SourceInfo.EltKind == AR_OBJECT_CONSTANT_BUFFER ||
@@ -11604,6 +11617,7 @@ static bool CheckBarrierCall(Sema &S, FunctionDecl *FD, CallExpr *CE) {
1160411617 return false;
1160511618}
1160611619
11620+ #ifdef ENABLE_SPIRV_CODEGEN
1160711621static bool CheckVKBufferPointerCast(Sema &S, FunctionDecl *FD, CallExpr *CE,
1160811622 bool isStatic) {
1160911623 const Expr *argExpr = CE->getArg(0);
@@ -11627,6 +11641,7 @@ static bool CheckVKBufferPointerCast(Sema &S, FunctionDecl *FD, CallExpr *CE,
1162711641
1162811642 return false;
1162911643}
11644+ #endif
1163011645
1163111646// Check HLSL call constraints, not fatal to creating the AST.
1163211647void Sema::CheckHLSLFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall,
@@ -11646,12 +11661,14 @@ void Sema::CheckHLSLFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall,
1164611661 case hlsl::IntrinsicOp::IOP_Barrier:
1164711662 CheckBarrierCall(*this, FDecl, TheCall);
1164811663 break;
11664+ #ifdef ENABLE_SPIRV_CODEGEN
1164911665 case hlsl::IntrinsicOp::IOP_Vkreinterpret_pointer_cast:
1165011666 CheckVKBufferPointerCast(*this, FDecl, TheCall, false);
1165111667 break;
1165211668 case hlsl::IntrinsicOp::IOP_Vkstatic_pointer_cast:
1165311669 CheckVKBufferPointerCast(*this, FDecl, TheCall, true);
1165411670 break;
11671+ #endif
1165511672 default:
1165611673 break;
1165711674 }
0 commit comments