diff --git a/clang/include/clang/Basic/HLSLRuntime.h b/clang/include/clang/Basic/HLSLRuntime.h --- a/clang/include/clang/Basic/HLSLRuntime.h +++ b/clang/include/clang/Basic/HLSLRuntime.h @@ -20,14 +20,6 @@ namespace clang { namespace hlsl { -enum class ResourceClass : uint8_t { - SRV = 0, - UAV, - CBuffer, - Sampler, - NumClasses -}; - constexpr ShaderStage getStageFromEnvironment(const llvm::Triple::EnvironmentType &E) { uint32_t Pipeline = diff --git a/clang/lib/CodeGen/CGHLSLRuntime.h b/clang/lib/CodeGen/CGHLSLRuntime.h --- a/clang/lib/CodeGen/CGHLSLRuntime.h +++ b/clang/lib/CodeGen/CGHLSLRuntime.h @@ -71,7 +71,7 @@ protected: CodeGenModule &CGM; uint32_t ResourceCounters[static_cast( - hlsl::ResourceClass::NumClasses)] = {0}; + llvm::hlsl::ResourceClass::NumClasses)] = {0}; llvm::Value *emitInputSemantic(llvm::IRBuilder<> &B, const ParmVarDecl &D, llvm::Type *Ty); @@ -94,7 +94,7 @@ private: void addBufferResourceAnnotation(llvm::GlobalVariable *GV, llvm::StringRef TyName, - hlsl::ResourceClass RC, + llvm::hlsl::ResourceClass RC, llvm::hlsl::ResourceKind RK, BufferResBinding &Binding); void addConstant(VarDecl *D, Buffer &CB); diff --git a/clang/lib/CodeGen/CGHLSLRuntime.cpp b/clang/lib/CodeGen/CGHLSLRuntime.cpp --- a/clang/lib/CodeGen/CGHLSLRuntime.cpp +++ b/clang/lib/CodeGen/CGHLSLRuntime.cpp @@ -24,7 +24,7 @@ using namespace clang; using namespace CodeGen; -using namespace hlsl; +using namespace clang::hlsl; using namespace llvm; namespace { @@ -176,8 +176,9 @@ layoutBuffer(Buf, DL); GlobalVariable *GV = replaceBuffer(Buf); M.getGlobalList().push_back(GV); - hlsl::ResourceClass RC = - Buf.IsCBuffer ? hlsl::ResourceClass::CBuffer : hlsl::ResourceClass::SRV; + llvm::hlsl::ResourceClass RC = Buf.IsCBuffer + ? llvm::hlsl::ResourceClass::CBuffer + : llvm::hlsl::ResourceClass::SRV; llvm::hlsl::ResourceKind RK = Buf.IsCBuffer ? llvm::hlsl::ResourceKind::CBuffer : llvm::hlsl::ResourceKind::TBuffer; @@ -193,7 +194,7 @@ void CGHLSLRuntime::addBufferResourceAnnotation(llvm::GlobalVariable *GV, llvm::StringRef TyName, - hlsl::ResourceClass RC, + llvm::hlsl::ResourceClass RC, llvm::hlsl::ResourceKind RK, BufferResBinding &Binding) { uint32_t Counter = ResourceCounters[static_cast(RC)]++; @@ -201,13 +202,13 @@ NamedMDNode *ResourceMD = nullptr; switch (RC) { - case hlsl::ResourceClass::UAV: + case llvm::hlsl::ResourceClass::UAV: ResourceMD = M.getOrInsertNamedMetadata("hlsl.uavs"); break; - case hlsl::ResourceClass::SRV: + case llvm::hlsl::ResourceClass::SRV: ResourceMD = M.getOrInsertNamedMetadata("hlsl.srvs"); break; - case hlsl::ResourceClass::CBuffer: + case llvm::hlsl::ResourceClass::CBuffer: ResourceMD = M.getOrInsertNamedMetadata("hlsl.cbufs"); break; default: @@ -290,8 +291,9 @@ QualType QT(Ty, 0); BufferResBinding Binding(D->getAttr()); - addBufferResourceAnnotation( - GV, QT.getAsString(), static_cast(RC), RK, Binding); + addBufferResourceAnnotation(GV, QT.getAsString(), + static_cast(RC), RK, + Binding); } CGHLSLRuntime::BufferResBinding::BufferResBinding( diff --git a/clang/lib/Sema/CMakeLists.txt b/clang/lib/Sema/CMakeLists.txt --- a/clang/lib/Sema/CMakeLists.txt +++ b/clang/lib/Sema/CMakeLists.txt @@ -1,5 +1,6 @@ set(LLVM_LINK_COMPONENTS Core + FrontendHLSL FrontendOpenMP MC Support diff --git a/clang/lib/Sema/HLSLExternalSemaSource.cpp b/clang/lib/Sema/HLSLExternalSemaSource.cpp --- a/clang/lib/Sema/HLSLExternalSemaSource.cpp +++ b/clang/lib/Sema/HLSLExternalSemaSource.cpp @@ -17,11 +17,12 @@ #include "clang/Basic/HLSLRuntime.h" #include "clang/Sema/Lookup.h" #include "clang/Sema/Sema.h" +#include "llvm/Frontend/HLSL/HLSLResource.h" #include using namespace clang; -using namespace hlsl; +using namespace llvm::hlsl; namespace { diff --git a/llvm/include/llvm/Frontend/HLSL/HLSLResource.h b/llvm/include/llvm/Frontend/HLSL/HLSLResource.h --- a/llvm/include/llvm/Frontend/HLSL/HLSLResource.h +++ b/llvm/include/llvm/Frontend/HLSL/HLSLResource.h @@ -21,6 +21,15 @@ namespace hlsl { +enum class ResourceClass : uint8_t { + SRV = 0, + UAV, + CBuffer, + Sampler, + Invalid, + NumClasses = Invalid, +}; + // The value ordering of this enumeration is part of the DXIL ABI. Elements // can only be added to the end, and not removed. enum class ResourceKind : uint32_t {