[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-20 Thread Xiang Li via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rGa7183a158d68: [NFC] [DirectX backend] move ResourceClass 
into llvm. (authored by python3kgae).

Changed prior to commit:
  https://reviews.llvm.org/D136134?vs=469302&id=469336#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

Files:
  clang/include/clang/Basic/HLSLRuntime.h
  clang/lib/CodeGen/CGHLSLRuntime.cpp
  clang/lib/CodeGen/CGHLSLRuntime.h
  clang/lib/Sema/CMakeLists.txt
  clang/lib/Sema/HLSLExternalSemaSource.cpp
  llvm/include/llvm/Frontend/HLSL/HLSLResource.h

Index: llvm/include/llvm/Frontend/HLSL/HLSLResource.h
===
--- llvm/include/llvm/Frontend/HLSL/HLSLResource.h
+++ 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 {
Index: clang/lib/Sema/HLSLExternalSemaSource.cpp
===
--- clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ 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 {
 
Index: clang/lib/Sema/CMakeLists.txt
===
--- clang/lib/Sema/CMakeLists.txt
+++ clang/lib/Sema/CMakeLists.txt
@@ -1,5 +1,6 @@
 set(LLVM_LINK_COMPONENTS
   Core
+  FrontendHLSL
   FrontendOpenMP
   MC
   Support
Index: clang/lib/CodeGen/CGHLSLRuntime.h
===
--- clang/lib/CodeGen/CGHLSLRuntime.h
+++ 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);
Index: clang/lib/CodeGen/CGHLSLRuntime.cpp
===
--- clang/lib/CodeGen/CGHLSLRuntime.cpp
+++ 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 = 

[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-20 Thread Xiang Li via Phabricator via cfe-commits
python3kgae added inline comments.



Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:20
 #include "clang/Sema/Sema.h"
+#include "llvm/Frontend/HLSL/HLSLResource.h"
 

beanz wrote:
> python3kgae wrote:
> > python3kgae wrote:
> > > beanz wrote:
> > > > You need to add FrontendHLSL to the Sema/CMakeLists.txt file too.
> > > Good catch.
> > > Not sure why both local build and the pre-commit check cannot hit it. :(
> > I think the reason it works is that it only used the enum decl in the 
> > header, not anything which needs to link.
> > Do we need to add FrontendHLSL to CMakeLists in this case?
> The first header include added to a component should add the linkage 
> dependency (even if it isn't strictly needed).
> 
> It is too easy to add a linkage dependency later without realizing it isn't 
> already specified. Because of how static archive linking works you don't 
> necessarily notice the missing dependency because many of our tools link both 
> Sema and CodeGen where there is already a dependency.
Got it.
Updated.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-20 Thread Xiang Li via Phabricator via cfe-commits
python3kgae updated this revision to Diff 469302.
python3kgae marked an inline comment as done.
python3kgae added a comment.

Add FrontendHLSL to Sema link


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

Files:
  clang/include/clang/Basic/HLSLRuntime.h
  clang/lib/CodeGen/CGHLSLRuntime.cpp
  clang/lib/CodeGen/CGHLSLRuntime.h
  clang/lib/Sema/CMakeLists.txt
  clang/lib/Sema/HLSLExternalSemaSource.cpp
  llvm/include/llvm/Frontend/HLSL/HLSLResource.h

Index: llvm/include/llvm/Frontend/HLSL/HLSLResource.h
===
--- llvm/include/llvm/Frontend/HLSL/HLSLResource.h
+++ 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 {
Index: clang/lib/Sema/HLSLExternalSemaSource.cpp
===
--- clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ 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 {
 
Index: clang/lib/Sema/CMakeLists.txt
===
--- clang/lib/Sema/CMakeLists.txt
+++ clang/lib/Sema/CMakeLists.txt
@@ -1,5 +1,6 @@
 set(LLVM_LINK_COMPONENTS
   Core
+  FrontendHLSL
   FrontendOpenMP
   MC
   Support
Index: clang/lib/CodeGen/CGHLSLRuntime.h
===
--- clang/lib/CodeGen/CGHLSLRuntime.h
+++ 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);
 
@@ -93,7 +93,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);
Index: clang/lib/CodeGen/CGHLSLRuntime.cpp
===
--- clang/lib/CodeGen/CGHLSLRuntime.cpp
+++ 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

[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-20 Thread Chris Bieneman via Phabricator via cfe-commits
beanz added inline comments.



Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:20
 #include "clang/Sema/Sema.h"
+#include "llvm/Frontend/HLSL/HLSLResource.h"
 

python3kgae wrote:
> python3kgae wrote:
> > beanz wrote:
> > > You need to add FrontendHLSL to the Sema/CMakeLists.txt file too.
> > Good catch.
> > Not sure why both local build and the pre-commit check cannot hit it. :(
> I think the reason it works is that it only used the enum decl in the header, 
> not anything which needs to link.
> Do we need to add FrontendHLSL to CMakeLists in this case?
The first header include added to a component should add the linkage dependency 
(even if it isn't strictly needed).

It is too easy to add a linkage dependency later without realizing it isn't 
already specified. Because of how static archive linking works you don't 
necessarily notice the missing dependency because many of our tools link both 
Sema and CodeGen where there is already a dependency.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-20 Thread Xiang Li via Phabricator via cfe-commits
python3kgae marked an inline comment as done.
python3kgae added inline comments.



Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:20
 #include "clang/Sema/Sema.h"
+#include "llvm/Frontend/HLSL/HLSLResource.h"
 

python3kgae wrote:
> beanz wrote:
> > You need to add FrontendHLSL to the Sema/CMakeLists.txt file too.
> Good catch.
> Not sure why both local build and the pre-commit check cannot hit it. :(
I think the reason it works is that it only used the enum decl in the header, 
not anything which needs to link.
Do we need to add FrontendHLSL to CMakeLists in this case?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-20 Thread Xiang Li via Phabricator via cfe-commits
python3kgae marked an inline comment as done.
python3kgae added inline comments.



Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:20
 #include "clang/Sema/Sema.h"
+#include "llvm/Frontend/HLSL/HLSLResource.h"
 

beanz wrote:
> You need to add FrontendHLSL to the Sema/CMakeLists.txt file too.
Good catch.
Not sure why both local build and the pre-commit check cannot hit it. :(


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-20 Thread Chris Bieneman via Phabricator via cfe-commits
beanz added inline comments.



Comment at: clang/lib/Sema/HLSLExternalSemaSource.cpp:20
 #include "clang/Sema/Sema.h"
+#include "llvm/Frontend/HLSL/HLSLResource.h"
 

You need to add FrontendHLSL to the Sema/CMakeLists.txt file too.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-19 Thread Xiang Li via Phabricator via cfe-commits
python3kgae updated this revision to Diff 469074.
python3kgae added a comment.

Rebase


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D136134/new/

https://reviews.llvm.org/D136134

Files:
  clang/include/clang/Basic/HLSLRuntime.h
  clang/lib/CodeGen/CGHLSLRuntime.cpp
  clang/lib/CodeGen/CGHLSLRuntime.h
  clang/lib/Sema/HLSLExternalSemaSource.cpp
  llvm/include/llvm/Frontend/HLSL/HLSLResource.h

Index: llvm/include/llvm/Frontend/HLSL/HLSLResource.h
===
--- llvm/include/llvm/Frontend/HLSL/HLSLResource.h
+++ 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 {
Index: clang/lib/Sema/HLSLExternalSemaSource.cpp
===
--- clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ 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 {
 
Index: clang/lib/CodeGen/CGHLSLRuntime.h
===
--- clang/lib/CodeGen/CGHLSLRuntime.h
+++ 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);
 
@@ -93,7 +93,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);
Index: clang/lib/CodeGen/CGHLSLRuntime.cpp
===
--- clang/lib/CodeGen/CGHLSLRuntime.cpp
+++ 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(
Index: clang/include/clang/Basic/HLSLRuntime.h
===
--- clang/include/clang/Basic/HL

[PATCH] D136134: [NFC] [DirectX backend] move ResourceClass into llvm.

2022-10-17 Thread Xiang Li via Phabricator via cfe-commits
python3kgae created this revision.
python3kgae added reviewers: pow2clk, beanz, bogner.
Herald added a subscriber: Anastasia.
Herald added a project: All.
python3kgae requested review of this revision.
Herald added projects: clang, LLVM.
Herald added subscribers: llvm-commits, cfe-commits.

Move ResourceClass into llvm/Frontend/HLSL/HLSLResource.h so it could be shared 
between clang and DirectX backend.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D136134

Files:
  clang/include/clang/Basic/HLSLRuntime.h
  clang/lib/CodeGen/CGHLSLRuntime.cpp
  clang/lib/CodeGen/CGHLSLRuntime.h
  clang/lib/Sema/HLSLExternalSemaSource.cpp
  llvm/include/llvm/Frontend/HLSL/HLSLResource.h

Index: llvm/include/llvm/Frontend/HLSL/HLSLResource.h
===
--- llvm/include/llvm/Frontend/HLSL/HLSLResource.h
+++ 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 {
Index: clang/lib/Sema/HLSLExternalSemaSource.cpp
===
--- clang/lib/Sema/HLSLExternalSemaSource.cpp
+++ 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 {
 
Index: clang/lib/CodeGen/CGHLSLRuntime.h
===
--- clang/lib/CodeGen/CGHLSLRuntime.h
+++ 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);
 
@@ -93,7 +93,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);
Index: clang/lib/CodeGen/CGHLSLRuntime.cpp
===
--- clang/lib/CodeGen/CGHLSLRuntime.cpp
+++ 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(