Ver Fonte

Move DxilModule into DXIL directory. (#1599)

* Move DxilModule into DXIL directory.
Xiang Li há 6 anos atrás
pai
commit
4df08af7c0
100 ficheiros alterados com 525 adições e 428 exclusões
  1. 11 12
      include/dxc/DXIL/DXIL.h
  2. 1 1
      include/dxc/DXIL/DxilCBuffer.h
  3. 0 0
      include/dxc/DXIL/DxilCompType.h
  4. 0 0
      include/dxc/DXIL/DxilConstants.h
  5. 1 1
      include/dxc/DXIL/DxilContainer.h
  6. 2 2
      include/dxc/DXIL/DxilEntryProps.h
  7. 1 1
      include/dxc/DXIL/DxilFunctionProps.h
  8. 0 0
      include/dxc/DXIL/DxilInstructions.h
  9. 0 0
      include/dxc/DXIL/DxilInterpolationMode.h
  10. 1 1
      include/dxc/DXIL/DxilMetadataHelper.h
  11. 8 8
      include/dxc/DXIL/DxilModule.h
  12. 0 0
      include/dxc/DXIL/DxilOperations.h
  13. 2 2
      include/dxc/DXIL/DxilResource.h
  14. 0 0
      include/dxc/DXIL/DxilResourceBase.h
  15. 1 1
      include/dxc/DXIL/DxilSampler.h
  16. 0 0
      include/dxc/DXIL/DxilSemantic.h
  17. 0 0
      include/dxc/DXIL/DxilShaderFlags.h
  18. 1 1
      include/dxc/DXIL/DxilShaderModel.h
  19. 0 0
      include/dxc/DXIL/DxilSigPoint.h
  20. 0 0
      include/dxc/DXIL/DxilSigPoint.inl
  21. 5 4
      include/dxc/DXIL/DxilSignature.h
  22. 3 44
      include/dxc/DXIL/DxilSignatureElement.h
  23. 2 2
      include/dxc/DXIL/DxilTypeSystem.h
  24. 0 0
      include/dxc/DXIL/DxilUtil.h
  25. 71 0
      include/dxc/HLSL/DxilPackSignatureElement.h
  26. 1 1
      include/dxc/HLSL/DxilRuntimeReflection.h
  27. 1 1
      include/dxc/HLSL/DxilSignatureAllocator.h
  28. 1 1
      include/dxc/HLSL/DxilValidation.h
  29. 6 6
      include/dxc/HLSL/HLModule.h
  30. 1 1
      include/dxc/HLSL/HLResource.h
  31. 1 1
      include/dxc/HLSL/HLSLExtensionsCodegenHelper.h
  32. 1 1
      lib/Analysis/DxilConstantFolding.cpp
  33. 2 2
      lib/Analysis/DxilSimplify.cpp
  34. 1 1
      lib/Bitcode/Reader/BitcodeReader.cpp
  35. 1 0
      lib/CMakeLists.txt
  36. 26 0
      lib/DXIL/CMakeLists.txt
  37. 1 1
      lib/DXIL/DxilCBuffer.cpp
  38. 1 1
      lib/DXIL/DxilCompType.cpp
  39. 1 1
      lib/DXIL/DxilContainer.cpp
  40. 1 1
      lib/DXIL/DxilInterpolationMode.cpp
  41. 10 10
      lib/DXIL/DxilMetadataHelper.cpp
  42. 7 7
      lib/DXIL/DxilModule.cpp
  43. 2 2
      lib/DXIL/DxilOperations.cpp
  44. 2 2
      lib/DXIL/DxilResource.cpp
  45. 1 1
      lib/DXIL/DxilResourceBase.cpp
  46. 1 1
      lib/DXIL/DxilSampler.cpp
  47. 4 4
      lib/DXIL/DxilSemantic.cpp
  48. 5 5
      lib/DXIL/DxilShaderFlags.cpp
  49. 2 2
      lib/DXIL/DxilShaderModel.cpp
  50. 6 119
      lib/DXIL/DxilSignature.cpp
  51. 5 5
      lib/DXIL/DxilSignatureElement.cpp
  52. 2 2
      lib/DXIL/DxilTypeSystem.cpp
  53. 3 3
      lib/DXIL/DxilUtil.cpp
  54. 16 0
      lib/DXIL/LLVMBuild.txt
  55. 1 1
      lib/DxcSupport/HLSLOptions.cpp
  56. 4 4
      lib/DxrFallback/DxrFallbackCompiler.cpp
  57. 2 17
      lib/HLSL/CMakeLists.txt
  58. 3 3
      lib/HLSL/ComputeViewIdState.cpp
  59. 3 3
      lib/HLSL/ComputeViewIdStateBuilder.cpp
  60. 3 3
      lib/HLSL/DxcOptimizer.cpp
  61. 4 4
      lib/HLSL/DxilAddPixelHitInstrumentation.cpp
  62. 6 6
      lib/HLSL/DxilCondenseResources.cpp
  63. 6 6
      lib/HLSL/DxilContainerAssembler.cpp
  64. 6 6
      lib/HLSL/DxilContainerReflection.cpp
  65. 1 1
      lib/HLSL/DxilConvergent.cpp
  66. 3 3
      lib/HLSL/DxilDebugInstrumentation.cpp
  67. 5 5
      lib/HLSL/DxilEliminateOutputDynamicIndexing.cpp
  68. 4 4
      lib/HLSL/DxilExpandTrigIntrinsics.cpp
  69. 2 2
      lib/HLSL/DxilExportMap.cpp
  70. 1 1
      lib/HLSL/DxilForceEarlyZ.cpp
  71. 6 6
      lib/HLSL/DxilGenerationPass.cpp
  72. 2 2
      lib/HLSL/DxilLegalizeSampleOffsetPass.cpp
  73. 9 9
      lib/HLSL/DxilLinker.cpp
  74. 2 2
      lib/HLSL/DxilOutputColorBecomesConstant.cpp
  75. 127 0
      lib/HLSL/DxilPackSignatureElement.cpp
  76. 8 8
      lib/HLSL/DxilPatchShaderRecordBindings.cpp
  77. 5 5
      lib/HLSL/DxilPreparePasses.cpp
  78. 4 4
      lib/HLSL/DxilPreserveAllOutputs.cpp
  79. 3 3
      lib/HLSL/DxilReduceMSAAToSingleSample.cpp
  80. 2 2
      lib/HLSL/DxilRemoveDiscards.cpp
  81. 1 1
      lib/HLSL/DxilRootSignature.cpp
  82. 3 3
      lib/HLSL/DxilShaderAccessTracking.cpp
  83. 22 0
      lib/HLSL/DxilSignatureValidation.cpp
  84. 2 2
      lib/HLSL/DxilTargetTransformInfo.cpp
  85. 9 8
      lib/HLSL/DxilValidation.cpp
  86. 4 4
      lib/HLSL/HLMatrixLowerPass.cpp
  87. 4 4
      lib/HLSL/HLModule.cpp
  88. 3 3
      lib/HLSL/HLOperationLower.cpp
  89. 2 2
      lib/HLSL/HLOperationLowerExtension.cpp
  90. 10 9
      lib/HLSL/HLSignatureLower.cpp
  91. 5 5
      lib/HLSL/WaveSensitivityAnalysis.cpp
  92. 1 1
      lib/IR/Function.cpp
  93. 2 1
      lib/LLVMBuild.txt
  94. 3 3
      lib/Transforms/IPO/GlobalDCE.cpp
  95. 1 1
      lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp
  96. 1 1
      lib/Transforms/Scalar/GVN.cpp
  97. 1 1
      lib/Transforms/Scalar/SROA.cpp
  98. 5 5
      lib/Transforms/Scalar/ScalarReplAggregatesHLSL.cpp
  99. 1 1
      lib/Transforms/Utils/Local.cpp
  100. 1 1
      tools/clang/include/clang/AST/HlslTypes.h

+ 11 - 12
include/dxc/HLSL/DXIL.h → include/dxc/DXIL/DXIL.h

@@ -11,15 +11,14 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilConstants.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilCompType.h"
-#include "dxc/HLSL/DxilInterpolationMode.h"
-#include "dxc/HLSL/DxilSemantic.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilCBuffer.h"
-#include "dxc/HLSL/DxilResource.h"
-#include "dxc/HLSL/DxilSampler.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilRootSignature.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilConstants.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilCompType.h"
+#include "dxc/DXIL/DxilInterpolationMode.h"
+#include "dxc/DXIL/DxilSemantic.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilCBuffer.h"
+#include "dxc/DXIL/DxilResource.h"
+#include "dxc/DXIL/DxilSampler.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"

+ 1 - 1
include/dxc/HLSL/DxilCBuffer.h → include/dxc/DXIL/DxilCBuffer.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilResourceBase.h"
+#include "dxc/DXIL/DxilResourceBase.h"
 
 
 namespace hlsl {

+ 0 - 0
include/dxc/HLSL/DxilCompType.h → include/dxc/DXIL/DxilCompType.h


+ 0 - 0
include/dxc/HLSL/DxilConstants.h → include/dxc/DXIL/DxilConstants.h


+ 1 - 1
include/dxc/HLSL/DxilContainer.h → include/dxc/DXIL/DxilContainer.h

@@ -17,7 +17,7 @@
 #include <stdint.h>
 #include <iterator>
 #include <functional>
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include "dxc/Support/WinAdapter.h"
 
 struct IDxcContainerReflection;

+ 2 - 2
lib/HLSL/DxilEntryProps.h → include/dxc/DXIL/DxilEntryProps.h

@@ -10,8 +10,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #pragma once
-#include "dxc/HLSL/DxilSignature.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
 
 namespace hlsl {
 

+ 1 - 1
include/dxc/HLSL/DxilFunctionProps.h → include/dxc/DXIL/DxilFunctionProps.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 
 namespace llvm {
 class Function;

+ 0 - 0
include/dxc/HLSL/DxilInstructions.h → include/dxc/DXIL/DxilInstructions.h


+ 0 - 0
include/dxc/HLSL/DxilInterpolationMode.h → include/dxc/DXIL/DxilInterpolationMode.h


+ 1 - 1
include/dxc/HLSL/DxilMetadataHelper.h → include/dxc/DXIL/DxilMetadataHelper.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include <memory>
 #include <string>
 #include <vector>

+ 8 - 8
include/dxc/HLSL/DxilModule.h → include/dxc/DXIL/DxilModule.h

@@ -11,14 +11,14 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilMetadataHelper.h"
-#include "dxc/HLSL/DxilCBuffer.h"
-#include "dxc/HLSL/DxilResource.h"
-#include "dxc/HLSL/DxilSampler.h"
-#include "dxc/HLSL/DxilShaderFlags.h"
-#include "dxc/HLSL/DxilSignature.h"
-#include "dxc/HLSL/DxilConstants.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilMetadataHelper.h"
+#include "dxc/DXIL/DxilCBuffer.h"
+#include "dxc/DXIL/DxilResource.h"
+#include "dxc/DXIL/DxilSampler.h"
+#include "dxc/DXIL/DxilShaderFlags.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/DXIL/DxilConstants.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
 #include "dxc/HLSL/ComputeViewIdState.h"
 
 #include <memory>

+ 0 - 0
include/dxc/HLSL/DxilOperations.h → include/dxc/DXIL/DxilOperations.h


+ 2 - 2
include/dxc/HLSL/DxilResource.h → include/dxc/DXIL/DxilResource.h

@@ -12,8 +12,8 @@
 #pragma once
 
 #include "DxilConstants.h"
-#include "dxc/HLSL/DxilResourceBase.h"
-#include "dxc/HLSL/DxilCompType.h"
+#include "dxc/DXIL/DxilResourceBase.h"
+#include "dxc/DXIL/DxilCompType.h"
 
 
 namespace hlsl {

+ 0 - 0
include/dxc/HLSL/DxilResourceBase.h → include/dxc/DXIL/DxilResourceBase.h


+ 1 - 1
include/dxc/HLSL/DxilSampler.h → include/dxc/DXIL/DxilSampler.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilResourceBase.h"
+#include "dxc/DXIL/DxilResourceBase.h"
 
 namespace hlsl {
 

+ 0 - 0
include/dxc/HLSL/DxilSemantic.h → include/dxc/DXIL/DxilSemantic.h


+ 0 - 0
include/dxc/HLSL/DxilShaderFlags.h → include/dxc/DXIL/DxilShaderFlags.h


+ 1 - 1
include/dxc/HLSL/DxilShaderModel.h → include/dxc/DXIL/DxilShaderModel.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include <string>
 
 

+ 0 - 0
include/dxc/HLSL/DxilSigPoint.h → include/dxc/DXIL/DxilSigPoint.h


+ 0 - 0
include/dxc/HLSL/DxilSigPoint.inl → include/dxc/DXIL/DxilSigPoint.inl


+ 5 - 4
include/dxc/HLSL/DxilSignature.h → include/dxc/DXIL/DxilSignature.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
 #include <memory>
 #include <string>
 #include <vector>
@@ -40,9 +40,6 @@ public:
   const DxilSignatureElement &GetElement(unsigned idx) const;
   const std::vector<std::unique_ptr<DxilSignatureElement> > &GetElements() const;
 
-  // Packs the signature elements per DXIL constraints and returns the number of rows used for the signature
-  unsigned PackElements(DXIL::PackingStrategy packing);
-
   // Returns true if all signature elements that should be allocated are allocated
   bool IsFullyAllocated() const;
 
@@ -51,6 +48,10 @@ public:
 
   bool UseMinPrecision() const { return m_UseMinPrecision; }
 
+  DXIL::SigPointKind GetSigPointKind() const { return m_sigPointKind; }
+
+  static bool ShouldBeAllocated(DXIL::SemanticInterpretationKind);
+
 private:
   DXIL::SigPointKind m_sigPointKind;
   std::vector<std::unique_ptr<DxilSignatureElement> > m_Elements;

+ 3 - 44
include/dxc/HLSL/DxilSignatureElement.h → include/dxc/DXIL/DxilSignatureElement.h

@@ -12,10 +12,9 @@
 #pragma once
 
 #include "llvm/ADT/StringRef.h"
-#include "dxc/HLSL/DxilSemantic.h"
-#include "dxc/HLSL/DxilInterpolationMode.h"
-#include "dxc/HLSL/DxilCompType.h"
-#include "dxc/HLSL/DxilSignatureAllocator.h"
+#include "dxc/DXIL/DxilSemantic.h"
+#include "dxc/DXIL/DxilInterpolationMode.h"
+#include "dxc/DXIL/DxilCompType.h"
 #include <string>
 #include <vector>
 #include <limits.h>
@@ -108,44 +107,4 @@ protected:
   unsigned m_DynIdxCompMask;
 };
 
-class DxilPackElement : public DxilSignatureAllocator::PackElement {
-  DxilSignatureElement *m_pSE;
-  bool m_bUseMinPrecision;
-
-public:
-  DxilPackElement(DxilSignatureElement *pSE, bool useMinPrecision) : m_pSE(pSE), m_bUseMinPrecision(useMinPrecision) {}
-  ~DxilPackElement() override {}
-  uint32_t GetID() const override { return m_pSE->GetID(); }
-  DXIL::SemanticKind GetKind() const override { return m_pSE->GetKind(); }
-  DXIL::InterpolationMode GetInterpolationMode() const override { return m_pSE->GetInterpolationMode()->GetKind(); }
-  DXIL::SemanticInterpretationKind GetInterpretation() const override { return m_pSE->GetInterpretation(); }
-  DXIL::SignatureDataWidth GetDataBitWidth() const override {
-    uint8_t size = m_pSE->GetCompType().GetSizeInBits();
-    // bool, min precision, or 32 bit types map to 32 bit size.
-    if (size == 16) {
-      return m_bUseMinPrecision ? DXIL::SignatureDataWidth::Bits32 : DXIL::SignatureDataWidth::Bits16;
-    }
-    else if (size == 1 || size == 32) {
-      return DXIL::SignatureDataWidth::Bits32;
-    }
-    return DXIL::SignatureDataWidth::Undefined;
-  }
-  uint32_t GetRows() const override { return m_pSE->GetRows(); }
-  uint32_t GetCols() const override { return m_pSE->GetCols(); }
-  bool IsAllocated() const override { return m_pSE->IsAllocated(); }
-  uint32_t GetStartRow() const override { return m_pSE->GetStartRow(); }
-  uint32_t GetStartCol() const override { return m_pSE->GetStartCol(); }
-
-  void ClearLocation() override {
-    m_pSE->SetStartRow(-1);
-    m_pSE->SetStartCol(-1);
-  }
-  void SetLocation(uint32_t Row, uint32_t Col) override {
-    m_pSE->SetStartRow(Row);
-    m_pSE->SetStartCol(Col);
-  }
-
-  DxilSignatureElement *Get() { return m_pSE; }
-};
-
 } // namespace hlsl

+ 2 - 2
include/dxc/HLSL/DxilTypeSystem.h → include/dxc/DXIL/DxilTypeSystem.h

@@ -12,8 +12,8 @@
 #pragma once
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/MapVector.h"
-#include "dxc/HLSL/DxilCompType.h"
-#include "dxc/HLSL/DxilInterpolationMode.h"
+#include "dxc/DXIL/DxilCompType.h"
+#include "dxc/DXIL/DxilInterpolationMode.h"
 
 #include <memory>
 #include <string>

+ 0 - 0
include/dxc/HLSL/DxilUtil.h → include/dxc/DXIL/DxilUtil.h


+ 71 - 0
include/dxc/HLSL/DxilPackSignatureElement.h

@@ -0,0 +1,71 @@
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+// DxilSignatureElement.h                                                    //
+// Copyright (C) Microsoft Corporation. All rights reserved.                 //
+// This file is distributed under the University of Illinois Open Source     //
+// License. See LICENSE.TXT for details.                                     //
+//                                                                           //
+// Class to pack HLSL signature element.                                     //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+
+#pragma once
+
+#include "llvm/ADT/StringRef.h"
+#include "dxc/DXIL/DxilSemantic.h"
+#include "dxc/DXIL/DxilInterpolationMode.h"
+#include "dxc/DXIL/DxilCompType.h"
+#include "dxc/HLSL/DxilSignatureAllocator.h"
+#include <string>
+#include <vector>
+#include <limits.h>
+
+namespace hlsl {
+
+class ShaderModel;
+
+class DxilPackElement : public DxilSignatureAllocator::PackElement {
+  DxilSignatureElement *m_pSE;
+  bool m_bUseMinPrecision;
+
+public:
+  DxilPackElement(DxilSignatureElement *pSE, bool useMinPrecision) : m_pSE(pSE), m_bUseMinPrecision(useMinPrecision) {}
+  ~DxilPackElement() override {}
+  uint32_t GetID() const override { return m_pSE->GetID(); }
+  DXIL::SemanticKind GetKind() const override { return m_pSE->GetKind(); }
+  DXIL::InterpolationMode GetInterpolationMode() const override { return m_pSE->GetInterpolationMode()->GetKind(); }
+  DXIL::SemanticInterpretationKind GetInterpretation() const override { return m_pSE->GetInterpretation(); }
+  DXIL::SignatureDataWidth GetDataBitWidth() const override {
+    uint8_t size = m_pSE->GetCompType().GetSizeInBits();
+    // bool, min precision, or 32 bit types map to 32 bit size.
+    if (size == 16) {
+      return m_bUseMinPrecision ? DXIL::SignatureDataWidth::Bits32 : DXIL::SignatureDataWidth::Bits16;
+    }
+    else if (size == 1 || size == 32) {
+      return DXIL::SignatureDataWidth::Bits32;
+    }
+    return DXIL::SignatureDataWidth::Undefined;
+  }
+  uint32_t GetRows() const override { return m_pSE->GetRows(); }
+  uint32_t GetCols() const override { return m_pSE->GetCols(); }
+  bool IsAllocated() const override { return m_pSE->IsAllocated(); }
+  uint32_t GetStartRow() const override { return m_pSE->GetStartRow(); }
+  uint32_t GetStartCol() const override { return m_pSE->GetStartCol(); }
+
+  void ClearLocation() override {
+    m_pSE->SetStartRow(-1);
+    m_pSE->SetStartCol(-1);
+  }
+  void SetLocation(uint32_t Row, uint32_t Col) override {
+    m_pSE->SetStartRow(Row);
+    m_pSE->SetStartCol(Col);
+  }
+
+  DxilSignatureElement *Get() { return m_pSE; }
+};
+
+class DxilSignature;
+// Packs the signature elements per DXIL constraints and returns the number of rows used for the signature.
+unsigned PackDxilSignature(DxilSignature &sig, DXIL::PackingStrategy packing);
+
+} // namespace hlsl

+ 1 - 1
include/dxc/HLSL/DxilRuntimeReflection.h

@@ -10,7 +10,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #pragma once
-#include "DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 
 namespace hlsl {
 namespace RDAT {

+ 1 - 1
include/dxc/HLSL/DxilSignatureAllocator.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include <vector>
 
 namespace hlsl {

+ 1 - 1
include/dxc/HLSL/DxilValidation.h

@@ -13,7 +13,7 @@
 
 #include <memory>
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include "dxc/Support/WinAdapter.h"
 
 namespace llvm {

+ 6 - 6
include/dxc/HLSL/HLModule.h

@@ -12,14 +12,14 @@
 #pragma once
 
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilMetadataHelper.h"
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilMetadataHelper.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include "dxc/HLSL/HLResource.h"
 #include "dxc/HLSL/HLOperations.h"
-#include "dxc/HLSL/DxilSampler.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilSignature.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilSampler.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
 #include <memory>
 #include <string>
 #include <vector>

+ 1 - 1
include/dxc/HLSL/HLResource.h

@@ -11,7 +11,7 @@
 
 #pragma once
 
-#include "dxc/HLSL/DxilResource.h"
+#include "dxc/DXIL/DxilResource.h"
 
 
 namespace hlsl {

+ 1 - 1
include/dxc/HLSL/HLSLExtensionsCodegenHelper.h

@@ -10,7 +10,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #pragma once
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include <vector>
 #include <string>
 

+ 1 - 1
lib/Analysis/DxilConstantFolding.cpp

@@ -35,7 +35,7 @@
 #include <algorithm>
 #include <functional>
 
-#include "dxc/HLSL/DXIL.h"
+#include "dxc/DXIL/DXIL.h"
 
 using namespace llvm;
 using namespace hlsl;

+ 2 - 2
lib/Analysis/DxilSimplify.cpp

@@ -21,8 +21,8 @@
 #include "llvm/IR/Module.h"
 #include "llvm/IR/IRBuilder.h"
 
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "llvm/Analysis/DxilConstantFolding.h"
 #include "llvm/Analysis/DxilSimplify.h"
 

+ 1 - 1
lib/Bitcode/Reader/BitcodeReader.cpp

@@ -34,7 +34,7 @@
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/raw_ostream.h"
 #include <deque>
-#include "dxc/HLSL/DxilOperations.h"   // HLSL Change
+#include "dxc/DXIL/DxilOperations.h"   // HLSL Change
 using namespace llvm;
 
 namespace {

+ 1 - 0
lib/CMakeLists.txt

@@ -22,4 +22,5 @@ add_subdirectory(ProfileData)
 # add_subdirectory(LibDriver) # HLSL Change
 add_subdirectory(DxcSupport) # HLSL Change
 add_subdirectory(HLSL) # HLSL Change
+add_subdirectory(DXIL) # HLSL Change
 add_subdirectory(DxrFallback) # HLSL Change

+ 26 - 0
lib/DXIL/CMakeLists.txt

@@ -0,0 +1,26 @@
+# Copyright (C) Microsoft Corporation. All rights reserved.
+# This file is distributed under the University of Illinois Open Source License. See LICENSE.TXT for details.
+add_llvm_library(LLVMDXIL
+  DxilCBuffer.cpp
+  DxilCompType.cpp
+  DxilContainer.cpp
+  DxilInterpolationMode.cpp
+  DxilMetadataHelper.cpp
+  DxilModule.cpp
+  DxilOperations.cpp
+  DxilResource.cpp
+  DxilResourceBase.cpp
+  DxilSampler.cpp
+  DxilSemantic.cpp
+  DxilShaderFlags.cpp
+  DxilShaderModel.cpp
+  DxilSignature.cpp
+  DxilSignatureElement.cpp
+  DxilTypeSystem.cpp
+  DxilUtil.cpp
+
+  ADDITIONAL_HEADER_DIRS
+  ${LLVM_MAIN_INCLUDE_DIR}/llvm/IR
+)
+
+add_dependencies(LLVMDXIL intrinsics_gen)

+ 1 - 1
lib/HLSL/DxilCBuffer.cpp → lib/DXIL/DxilCBuffer.cpp

@@ -7,7 +7,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilCBuffer.h"
+#include "dxc/DXIL/DxilCBuffer.h"
 #include "dxc/Support/Global.h"
 
 

+ 1 - 1
lib/HLSL/DxilCompType.cpp → lib/DXIL/DxilCompType.cpp

@@ -7,7 +7,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilCompType.h"
+#include "dxc/DXIL/DxilCompType.h"
 #include "dxc/Support/Global.h"
 
 #include "llvm/IR/LLVMContext.h"

+ 1 - 1
lib/HLSL/DxilContainer.cpp → lib/DXIL/DxilContainer.cpp

@@ -9,7 +9,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilContainer.h"
+#include "dxc/DXIL/DxilContainer.h"
 #include <algorithm>
 
 namespace hlsl {

+ 1 - 1
lib/HLSL/DxilInterpolationMode.cpp → lib/DXIL/DxilInterpolationMode.cpp

@@ -7,7 +7,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilInterpolationMode.h"
+#include "dxc/DXIL/DxilInterpolationMode.h"
 #include "dxc/Support/Global.h"
 
 

+ 10 - 10
lib/HLSL/DxilMetadataHelper.cpp → lib/DXIL/DxilMetadataHelper.cpp

@@ -8,18 +8,18 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilMetadataHelper.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilCBuffer.h"
-#include "dxc/HLSL/DxilResource.h"
-#include "dxc/HLSL/DxilSampler.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilSignature.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilMetadataHelper.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilCBuffer.h"
+#include "dxc/DXIL/DxilResource.h"
+#include "dxc/DXIL/DxilSampler.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
 #include "dxc/HLSL/DxilRootSignature.h"
 #include "dxc/HLSL/ComputeViewIdState.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
-#include "dxc/HLSL/DxilShaderFlags.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilShaderFlags.h"
 
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/Function.h"

+ 7 - 7
lib/HLSL/DxilModule.cpp → lib/DXIL/DxilModule.cpp

@@ -8,15 +8,15 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilContainer.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilContainer.h"
 #include "dxc/HLSL/DxilRootSignature.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
 #include "dxc/Support/WinAdapter.h"
-#include "DxilEntryProps.h"
+#include "dxc/DXIL/DxilEntryProps.h"
 
 #include "llvm/IR/Constants.h"
 #include "llvm/IR/Function.h"

+ 2 - 2
lib/HLSL/DxilOperations.cpp → lib/DXIL/DxilOperations.cpp

@@ -9,9 +9,9 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilModule.h"
 
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/IR/LLVMContext.h"

+ 2 - 2
lib/HLSL/DxilResource.cpp → lib/DXIL/DxilResource.cpp

@@ -7,9 +7,9 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilResource.h"
+#include "dxc/DXIL/DxilResource.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilResourceBase.h"
+#include "dxc/DXIL/DxilResourceBase.h"
 #include "llvm/IR/Constant.h"
 #include "llvm/IR/DerivedTypes.h"
 

+ 1 - 1
lib/HLSL/DxilResourceBase.cpp → lib/DXIL/DxilResourceBase.cpp

@@ -7,7 +7,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilResourceBase.h"
+#include "dxc/DXIL/DxilResourceBase.h"
 #include "dxc/Support/Global.h"
 
 

+ 1 - 1
lib/HLSL/DxilSampler.cpp → lib/DXIL/DxilSampler.cpp

@@ -7,7 +7,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilSampler.h"
+#include "dxc/DXIL/DxilSampler.h"
 #include "dxc/Support/Global.h"
 
 

+ 4 - 4
lib/HLSL/DxilSemantic.cpp → lib/DXIL/DxilSemantic.cpp

@@ -7,10 +7,10 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilSigPoint.h"
-#include "dxc/HLSL/DxilSemantic.h"
-#include "dxc/HLSL/DxilSignature.h"
-#include "dxc/HLSL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilSigPoint.h"
+#include "dxc/DXIL/DxilSemantic.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/DXIL/DxilShaderModel.h"
 #include "dxc/Support/Global.h"
 
 #include <string>

+ 5 - 5
lib/HLSL/DxilShaderFlags.cpp → lib/DXIL/DxilShaderFlags.cpp

@@ -7,11 +7,11 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilContainer.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilShaderFlags.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilResource.h"
+#include "dxc/DXIL/DxilContainer.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilShaderFlags.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilResource.h"
 #include "dxc/Support/Global.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Instructions.h"

+ 2 - 2
lib/HLSL/DxilShaderModel.cpp → lib/DXIL/DxilShaderModel.cpp

@@ -9,8 +9,8 @@
 
 #include <limits.h>
 
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilSemantic.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilSemantic.h"
 #include "dxc/Support/Global.h"
 
 

+ 6 - 119
lib/HLSL/DxilSignature.cpp → lib/DXIL/DxilSignature.cpp

@@ -8,9 +8,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilSignature.h"
-#include "dxc/HLSL/DxilSignatureAllocator.h"
-#include "dxc/HLSL/DxilSigPoint.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/DXIL/DxilSigPoint.h"
 #include "llvm/ADT/STLExtras.h"
 
 using std::vector;
@@ -87,11 +86,8 @@ const std::vector<std::unique_ptr<DxilSignatureElement> > &DxilSignature::GetEle
   return m_Elements;
 }
 
-namespace {
-
-static bool ShouldBeAllocated(const DxilSignatureElement *SE) {
-  DXIL::SemanticInterpretationKind I = SE->GetInterpretation();
-  switch (I) {
+bool DxilSignature::ShouldBeAllocated(DXIL::SemanticInterpretationKind Kind) {
+  switch (Kind) {
   case DXIL::SemanticInterpretationKind::NA:
   case DXIL::SemanticInterpretationKind::NotInSig:
   case DXIL::SemanticInterpretationKind::NotPacked:
@@ -103,12 +99,9 @@ static bool ShouldBeAllocated(const DxilSignatureElement *SE) {
   return true;
 }
 
-} // anonymous namespace
-
-
 bool DxilSignature::IsFullyAllocated() const {
   for (auto &SE : m_Elements) {
-    if (!ShouldBeAllocated(SE.get()))
+    if (!ShouldBeAllocated(SE.get()->GetInterpretation()))
       continue;
     if (!SE->IsAllocated())
       return false;
@@ -125,107 +118,6 @@ unsigned DxilSignature::NumVectorsUsed(unsigned streamIndex) const {
   return NumVectors;
 }
 
-unsigned DxilSignature::PackElements(DXIL::PackingStrategy packing) {
-  unsigned rowsUsed = 0;
-
-  // Transfer to elements derived from DxilSignatureAllocator::PackElement
-  std::vector<DxilPackElement> packElements;
-  for (auto &SE : m_Elements) {
-    if (ShouldBeAllocated(SE.get()))
-      packElements.emplace_back(SE.get(), m_UseMinPrecision);
-  }
-
-  if (m_sigPointKind == DXIL::SigPointKind::GSOut) {
-    // Special case due to support for multiple streams
-    DxilSignatureAllocator alloc[4] = {{32, UseMinPrecision()},
-                                       {32, UseMinPrecision()},
-                                       {32, UseMinPrecision()},
-                                       {32, UseMinPrecision()}};
-    std::vector<DxilSignatureAllocator::PackElement*> elements[4];
-    for (auto &SE : packElements) {
-      elements[SE.Get()->GetOutputStream()].push_back(&SE);
-    }
-    for (unsigned i = 0; i < 4; ++i) {
-      if (!elements[i].empty()) {
-        unsigned streamRowsUsed = 0;
-        switch (packing) {
-        case DXIL::PackingStrategy::PrefixStable:
-          streamRowsUsed = alloc[i].PackPrefixStable(elements[i], 0, 32);
-          break;
-        case DXIL::PackingStrategy::Optimized:
-          streamRowsUsed = alloc[i].PackOptimized(elements[i], 0, 32);
-          break;
-        default:
-          DXASSERT(false, "otherwise, invalid packing strategy supplied");
-        }
-        if (streamRowsUsed > rowsUsed)
-          rowsUsed = streamRowsUsed;
-      }
-    }
-    // rowsUsed isn't really meaningful in this case.
-    return rowsUsed;
-  }
-
-  const SigPoint *SP = SigPoint::GetSigPoint(m_sigPointKind);
-  DXIL::PackingKind PK = SP->GetPackingKind();
-
-  switch (PK) {
-  case DXIL::PackingKind::None:
-    // no packing.
-    break;
-
-  case DXIL::PackingKind::InputAssembler:
-    // incrementally assign each element that belongs in the signature to the start of the next free row
-    for (auto &SE : packElements) {
-      SE.SetLocation(rowsUsed, 0);
-      rowsUsed += SE.GetRows();
-    }
-    break;
-
-  case DXIL::PackingKind::Vertex:
-  case DXIL::PackingKind::PatchConstant: {
-      DxilSignatureAllocator alloc(32, UseMinPrecision());
-      std::vector<DxilSignatureAllocator::PackElement*> elements;
-      elements.reserve(packElements.size());
-      for (auto &SE : packElements){
-        elements.push_back(&SE);
-      }
-      switch (packing) {
-      case DXIL::PackingStrategy::PrefixStable:
-        rowsUsed = alloc.PackPrefixStable(elements, 0, 32);
-        break;
-      case DXIL::PackingStrategy::Optimized:
-        rowsUsed = alloc.PackOptimized(elements, 0, 32);
-        break;
-      default:
-        DXASSERT(false, "otherwise, invalid packing strategy supplied");
-      }
-    }
-    break;
-
-  case DXIL::PackingKind::Target:
-    // for SV_Target, assign rows according to semantic index, the rest are unassigned (-1)
-    // Note: Overlapping semantic indices should be checked elsewhere
-    for (auto &SE : packElements) {
-      if (SE.GetKind() != DXIL::SemanticKind::Target)
-        continue;
-      unsigned row = SE.Get()->GetSemanticStartIndex();
-      SE.SetLocation(row, 0);
-      DXASSERT(SE.GetRows() == 1, "otherwise, SV_Target output not broken into separate rows earlier");
-      row += SE.GetRows();
-      if (rowsUsed < row)
-        rowsUsed = row;
-    }
-    break;
-
-  case DXIL::PackingKind::Invalid:
-  default:
-    DXASSERT(false, "unexpected PackingKind.");
-  }
-
-  return rowsUsed;
-}
-
 //------------------------------------------------------------------------------
 //
 // EntrySingnature methods.
@@ -236,9 +128,4 @@ DxilEntrySignature::DxilEntrySignature(const DxilEntrySignature &src)
 
 } // namespace hlsl
 
-#include <algorithm>
-#include "dxc/HLSL/DxilSignatureAllocator.inl"
-#include "dxc/HLSL/DxilSigPoint.inl"
-#include "dxc/HLSL/DxilPipelineStateValidation.h"
-#include <functional>
-#include "dxc/HLSL/ViewIDPipelineValidation.inl"
+#include "dxc/DXIL/DxilSigPoint.inl"

+ 5 - 5
lib/HLSL/DxilSignatureElement.cpp → lib/DXIL/DxilSignatureElement.cpp

@@ -10,11 +10,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilSemantic.h"
-#include "dxc/HLSL/DxilSigPoint.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilContainer.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilSemantic.h"
+#include "dxc/DXIL/DxilSigPoint.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilContainer.h"
 #include <memory>
 
 using std::string;

+ 2 - 2
lib/HLSL/DxilTypeSystem.cpp → lib/DXIL/DxilTypeSystem.cpp

@@ -7,8 +7,8 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilTypeSystem.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/Support/Global.h"
 #include "dxc/Support/WinFunctions.h"
 

+ 3 - 3
lib/HLSL/DxilUtil.cpp → lib/DXIL/DxilUtil.cpp

@@ -11,9 +11,9 @@
 
 
 #include "llvm/IR/GlobalVariable.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
-#include "dxc/HLSL/DxilUtil.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilUtil.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "llvm/Bitcode/ReaderWriter.h"
 #include "llvm/IR/DiagnosticInfo.h"
 #include "llvm/IR/DiagnosticPrinter.h"

+ 16 - 0
lib/DXIL/LLVMBuild.txt

@@ -0,0 +1,16 @@
+; Copyright (C) Microsoft Corporation. All rights reserved.
+; This file is distributed under the University of Illinois Open Source License. See LICENSE.TXT for details.
+;
+; This is an LLVMBuild description file for the components in this subdirectory.
+;
+; For more information on the LLVMBuild system, please see:
+;
+;   http://llvm.org/docs/LLVMBuild.html
+;
+;===------------------------------------------------------------------------===;
+
+[component_0]
+type = Library
+name = DXIL
+parent = Libraries
+required_libraries = BitReader Core DxcSupport IPA Support

+ 1 - 1
lib/DxcSupport/HLSLOptions.cpp

@@ -17,7 +17,7 @@
 #include "dxc/Support/HLSLOptions.h"
 #include "dxc/Support/Unicode.h"
 #include "dxc/Support/dxcapi.use.h"
-#include "dxc/HLSL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilShaderModel.h"
 
 using namespace llvm::opt;
 using namespace dxc;

+ 4 - 4
lib/DxrFallback/DxrFallbackCompiler.cpp

@@ -8,11 +8,11 @@
 #include "dxc/dxcdxrfallbackcompiler.h"
 #include "dxc/Support/dxcapi.use.h"
 #include "dxc/Support/dxcapi.impl.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HLSL/DxilLinker.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilInstructions.h"
 
 #include "llvm/Analysis/CallGraph.h"
 #include "llvm/IR/InstIterator.h"

+ 2 - 17
lib/HLSL/CMakeLists.txt

@@ -5,10 +5,7 @@ add_llvm_library(LLVMHLSL
   ComputeViewIdStateBuilder.cpp
   ControlDependence.cpp
   DxilAddPixelHitInstrumentation.cpp
-  DxilCBuffer.cpp
-  DxilCompType.cpp
   DxilCondenseResources.cpp
-  DxilContainer.cpp
   DxilContainerAssembler.cpp
   DxilContainerReflection.cpp
   DxilConvergent.cpp
@@ -17,32 +14,20 @@ add_llvm_library(LLVMHLSL
   DxilExpandTrigIntrinsics.cpp
   DxilForceEarlyZ.cpp
   DxilGenerationPass.cpp
-  DxilInterpolationMode.cpp
   DxilLegalizeSampleOffsetPass.cpp
   DxilLinker.cpp
-  DxilMetadataHelper.cpp
-  DxilModule.cpp
-  DxilOperations.cpp
   DxilOutputColorBecomesConstant.cpp
   DxilPreparePasses.cpp
   DxilRemoveDiscards.cpp
   DxilReduceMSAAToSingleSample.cpp
+  DxilPackSignatureElement.cpp
   DxilPatchShaderRecordBindings.cpp
   DxilPreserveAllOutputs.cpp
-  DxilResource.cpp
-  DxilResourceBase.cpp
   DxilRootSignature.cpp
-  DxilSampler.cpp
-  DxilSemantic.cpp
-  DxilShaderFlags.cpp
   DxilShaderAccessTracking.cpp
-  DxilShaderModel.cpp
-  DxilSignature.cpp
-  DxilSignatureElement.cpp
+  DxilSignatureValidation.cpp
   DxilTargetLowering.cpp
   DxilTargetTransformInfo.cpp
-  DxilTypeSystem.cpp
-  DxilUtil.cpp
   DxilExportMap.cpp
   DxilValidation.cpp
   DxcOptimizer.cpp

+ 3 - 3
lib/HLSL/ComputeViewIdState.cpp

@@ -9,9 +9,9 @@
 
 #include "dxc/HLSL/ComputeViewIdState.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilInstructions.h"
 
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"

+ 3 - 3
lib/HLSL/ComputeViewIdStateBuilder.cpp

@@ -9,9 +9,9 @@
 
 #include "dxc/HLSL/ComputeViewIdState.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilInstructions.h"
 
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/Module.h"

+ 3 - 3
lib/HLSL/DxcOptimizer.cpp

@@ -13,15 +13,15 @@
 #include "dxc/Support/Global.h"
 #include "dxc/Support/Unicode.h"
 #include "dxc/Support/microcom.h"
-#include "dxc/HLSL/DxilContainer.h"
+#include "dxc/DXIL/DxilContainer.h"
 #include "dxc/Support/FileIOHelper.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
 #include "dxc/HLSL/ReducibilityAnalysis.h"
 #include "dxc/HLSL/HLMatrixLowerPass.h"
 #include "dxc/HLSL/DxilGenerationPass.h"
 #include "dxc/HLSL/ComputeViewIdState.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/Support/dxcapi.impl.h"
 
 #include "llvm/Pass.h"

+ 4 - 4
lib/HLSL/DxilAddPixelHitInstrumentation.cpp

@@ -11,11 +11,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilInstructions.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 
 #include "llvm/IR/PassManager.h"
 #include "llvm/Transforms/Utils/Local.h"

+ 6 - 6
lib/HLSL/DxilCondenseResources.cpp

@@ -10,15 +10,15 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilInstructions.h"
 #include "dxc/HLSL/DxilSpanAllocator.h"
 #include "dxc/HLSL/HLMatrixLowerHelper.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/HLSL/HLModule.h"
 
 #include "llvm/IR/Instructions.h"

+ 6 - 6
lib/HLSL/DxilContainerAssembler.cpp

@@ -15,13 +15,13 @@
 #include "llvm/IR/DebugInfo.h"
 #include "llvm/Bitcode/ReaderWriter.h"
 #include "llvm/Support/MD5.h"
-#include "dxc/HLSL/DxilContainer.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilContainer.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilShaderModel.h"
 #include "dxc/HLSL/DxilRootSignature.h"
-#include "dxc/HLSL/DxilUtil.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilUtil.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/Support/Global.h"
 #include "dxc/Support/Unicode.h"
 #include "dxc/Support/WinIncludes.h"

+ 6 - 6
lib/HLSL/DxilContainerReflection.cpp

@@ -12,18 +12,18 @@
 #include "llvm/Bitcode/ReaderWriter.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/InstIterator.h"
-#include "dxc/HLSL/DxilContainer.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilContainer.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilInstructions.h"
 #include "dxc/Support/Global.h"
 #include "dxc/Support/Unicode.h"
 #include "dxc/Support/WinIncludes.h"
 #include "dxc/Support/microcom.h"
 #include "dxc/Support/FileIOHelper.h"
 #include "dxc/Support/dxcapi.impl.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
 
 #include <unordered_set>
 #include "llvm/ADT/SetVector.h"

+ 1 - 1
lib/HLSL/DxilConvergent.cpp

@@ -18,7 +18,7 @@
 #include "llvm/Support/GenericDomTree.h"
 #include "llvm/Support/raw_os_ostream.h"
 
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include "dxc/HLSL/DxilGenerationPass.h"
 #include "dxc/HLSL/HLOperations.h"
 #include "dxc/HLSL/HLModule.h"

+ 3 - 3
lib/HLSL/DxilDebugInstrumentation.cpp

@@ -10,10 +10,10 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 
 #include "llvm/IR/Module.h"
 #include "llvm/IR/Constants.h"

+ 5 - 5
lib/HLSL/DxilEliminateOutputDynamicIndexing.cpp

@@ -10,12 +10,12 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilInstructions.h"
 
 #include "llvm/IR/Module.h"
 #include "llvm/Pass.h"

+ 4 - 4
lib/HLSL/DxilExpandTrigIntrinsics.cpp

@@ -41,11 +41,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilInstructions.h"
 
 #include "llvm/IR/Module.h"
 #include "llvm/Pass.h"

+ 2 - 2
lib/HLSL/DxilExportMap.cpp

@@ -10,9 +10,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/HLSL/DxilExportMap.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/ADT/StringRef.h"
 #include "llvm/ADT/StringSet.h"

+ 1 - 1
lib/HLSL/DxilForceEarlyZ.cpp

@@ -10,7 +10,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
 #include "llvm/IR/Module.h"
 

+ 6 - 6
lib/HLSL/DxilGenerationPass.cpp

@@ -10,20 +10,20 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HLSL/HLModule.h"
 #include "dxc/HLSL/HLOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilInstructions.h"
 #include "dxc/HLSL/HLMatrixLowerHelper.h"
 #include "dxc/HlslIntrinsicOp.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
 #include "dxc/HLSL/HLOperationLower.h"
 #include "HLSignatureLower.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/Support/exception.h"
-#include "DxilEntryProps.h"
+#include "dxc/DXIL/DxilEntryProps.h"
 
 #include "llvm/IR/GetElementPtrTypeIterator.h"
 #include "llvm/IR/IRBuilder.h"

+ 2 - 2
lib/HLSL/DxilLegalizeSampleOffsetPass.cpp

@@ -10,8 +10,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 
 #include "llvm/Analysis/InstructionSimplify.h"
 #include "llvm/Analysis/LoopInfo.h"

+ 9 - 9
lib/HLSL/DxilLinker.cpp

@@ -8,14 +8,14 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilLinker.h"
-#include "dxc/HLSL/DxilCBuffer.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
-#include "DxilEntryProps.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilResource.h"
-#include "dxc/HLSL/DxilSampler.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilCBuffer.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilEntryProps.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilResource.h"
+#include "dxc/DXIL/DxilSampler.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/Support/Global.h"
 #include "llvm/ADT/StringSet.h"
 #include "llvm/ADT/DenseSet.h"
@@ -29,7 +29,7 @@
 #include <memory>
 #include <vector>
 
-#include "dxc/HLSL/DxilContainer.h"
+#include "dxc/DXIL/DxilContainer.h"
 #include "llvm/IR/DiagnosticPrinter.h"
 #include "llvm/IR/LLVMContext.h"
 #include "llvm/IR/DebugInfo.h"

+ 2 - 2
lib/HLSL/DxilOutputColorBecomesConstant.cpp

@@ -11,8 +11,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
 #include "dxc/HLSL/DxilSpanAllocator.h"
 

+ 127 - 0
lib/HLSL/DxilPackSignatureElement.cpp

@@ -0,0 +1,127 @@
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+// DxilSignatureElement.h                                                    //
+// Copyright (C) Microsoft Corporation. All rights reserved.                 //
+// This file is distributed under the University of Illinois Open Source     //
+// License. See LICENSE.TXT for details.                                     //
+//                                                                           //
+// Class to pack HLSL signature element.                                     //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+
+
+#include "dxc/Support/Global.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/HLSL/DxilSignatureAllocator.h"
+#include "dxc/DXIL/DxilSigPoint.h"
+#include "dxc/HLSL/DxilPackSignatureElement.h"
+
+using namespace hlsl;
+using namespace llvm;
+
+namespace hlsl {
+unsigned PackDxilSignature(DxilSignature &sig, DXIL::PackingStrategy packing) {
+  unsigned rowsUsed = 0;
+  bool bUseMinPrecision = sig.UseMinPrecision();
+  // Transfer to elements derived from DxilSignatureAllocator::PackElement
+  std::vector<DxilPackElement> packElements;
+  for (auto &SE : sig.GetElements()) {
+    if (DxilSignature::ShouldBeAllocated(SE.get()->GetInterpretation()))
+      packElements.emplace_back(SE.get(), bUseMinPrecision);
+  }
+
+  DXIL::SigPointKind Kind = sig.GetSigPointKind();
+  if (Kind == DXIL::SigPointKind::GSOut) {
+    // Special case due to support for multiple streams
+    DxilSignatureAllocator alloc[4] = {{32, bUseMinPrecision},
+                                       {32, bUseMinPrecision},
+                                       {32, bUseMinPrecision},
+                                       {32, bUseMinPrecision}};
+    std::vector<DxilSignatureAllocator::PackElement*> elements[4];
+    for (auto &SE : packElements) {
+      elements[SE.Get()->GetOutputStream()].push_back(&SE);
+    }
+    for (unsigned i = 0; i < 4; ++i) {
+      if (!elements[i].empty()) {
+        unsigned streamRowsUsed = 0;
+        switch (packing) {
+        case DXIL::PackingStrategy::PrefixStable:
+          streamRowsUsed = alloc[i].PackPrefixStable(elements[i], 0, 32);
+          break;
+        case DXIL::PackingStrategy::Optimized:
+          streamRowsUsed = alloc[i].PackOptimized(elements[i], 0, 32);
+          break;
+        default:
+          DXASSERT(false, "otherwise, invalid packing strategy supplied");
+        }
+        if (streamRowsUsed > rowsUsed)
+          rowsUsed = streamRowsUsed;
+      }
+    }
+    // rowsUsed isn't really meaningful in this case.
+    return rowsUsed;
+  }
+
+  const SigPoint *SP = SigPoint::GetSigPoint(Kind);
+  DXIL::PackingKind PK = SP->GetPackingKind();
+
+  switch (PK) {
+  case DXIL::PackingKind::None:
+    // no packing.
+    break;
+
+  case DXIL::PackingKind::InputAssembler:
+    // incrementally assign each element that belongs in the signature to the start of the next free row
+    for (auto &SE : packElements) {
+      SE.SetLocation(rowsUsed, 0);
+      rowsUsed += SE.GetRows();
+    }
+    break;
+
+  case DXIL::PackingKind::Vertex:
+  case DXIL::PackingKind::PatchConstant: {
+      DxilSignatureAllocator alloc(32, bUseMinPrecision);
+      std::vector<DxilSignatureAllocator::PackElement*> elements;
+      elements.reserve(packElements.size());
+      for (auto &SE : packElements){
+        elements.push_back(&SE);
+      }
+      switch (packing) {
+      case DXIL::PackingStrategy::PrefixStable:
+        rowsUsed = alloc.PackPrefixStable(elements, 0, 32);
+        break;
+      case DXIL::PackingStrategy::Optimized:
+        rowsUsed = alloc.PackOptimized(elements, 0, 32);
+        break;
+      default:
+        DXASSERT(false, "otherwise, invalid packing strategy supplied");
+      }
+    }
+    break;
+
+  case DXIL::PackingKind::Target:
+    // for SV_Target, assign rows according to semantic index, the rest are unassigned (-1)
+    // Note: Overlapping semantic indices should be checked elsewhere
+    for (auto &SE : packElements) {
+      if (SE.GetKind() != DXIL::SemanticKind::Target)
+        continue;
+      unsigned row = SE.Get()->GetSemanticStartIndex();
+      SE.SetLocation(row, 0);
+      DXASSERT(SE.GetRows() == 1, "otherwise, SV_Target output not broken into separate rows earlier");
+      row += SE.GetRows();
+      if (rowsUsed < row)
+        rowsUsed = row;
+    }
+    break;
+
+  case DXIL::PackingKind::Invalid:
+  default:
+    DXASSERT(false, "unexpected PackingKind.");
+  }
+
+  return rowsUsed;
+}
+}
+
+#include <algorithm>
+#include "dxc/HLSL/DxilSignatureAllocator.inl"

+ 8 - 8
lib/HLSL/DxilPatchShaderRecordBindings.cpp

@@ -13,19 +13,19 @@
 
 #include "dxc/HLSL/DxilGenerationPass.h"
 #include "dxc/HLSL/DxilFallbackLayerPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/Support/Global.h"
 
 #include "dxc/Support/Unicode.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
-#include "dxc/HLSL/DxilConstants.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilConstants.h"
+#include "dxc/DXIL/DxilInstructions.h"
 #include "dxc/HLSL/DxilSpanAllocator.h"
 #include "dxc/HLSL/DxilRootSignature.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "llvm/Transforms/Utils/Cloning.h"
 
 #include "llvm/IR/Instructions.h"

+ 5 - 5
lib/HLSL/DxilPreparePasses.cpp

@@ -10,13 +10,13 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/HLSL/HLOperations.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
-#include "dxc/HLSL/DxilUtil.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilUtil.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
 #include "llvm/IR/GetElementPtrTypeIterator.h"
 #include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/Instructions.h"

+ 4 - 4
lib/HLSL/DxilPreserveAllOutputs.cpp

@@ -10,11 +10,11 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilInstructions.h"
 
 #include "llvm/IR/Module.h"
 #include "llvm/IR/InstIterator.h"

+ 3 - 3
lib/HLSL/DxilReduceMSAAToSingleSample.cpp

@@ -10,9 +10,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilInstructions.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
 
 #include "llvm/IR/Instructions.h"

+ 2 - 2
lib/HLSL/DxilRemoveDiscards.cpp

@@ -10,8 +10,8 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
 
 #include "llvm/IR/Instructions.h"

+ 1 - 1
lib/HLSL/DxilRootSignature.cpp

@@ -9,7 +9,7 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include "dxc/HLSL/DxilRootSignature.h"
 #include "dxc/HLSL/DxilPipelineStateValidation.h"
 #include "dxc/Support/Global.h"

+ 3 - 3
lib/HLSL/DxilShaderAccessTracking.cpp

@@ -11,9 +11,9 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilInstructions.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilInstructions.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HLSL/DxilPIXPasses.h"
 #include "dxc/HLSL/DxilSpanAllocator.h"
 

+ 22 - 0
lib/HLSL/DxilSignatureValidation.cpp

@@ -0,0 +1,22 @@
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+// DxilSignatureElement.h                                                    //
+// Copyright (C) Microsoft Corporation. All rights reserved.                 //
+// This file is distributed under the University of Illinois Open Source     //
+// License. See LICENSE.TXT for details.                                     //
+//                                                                           //
+// Validate HLSL signature element packing.                                  //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+
+#include "dxc/Support/Global.h"
+#include "dxc/DXIL/DxilSignature.h"
+#include "dxc/DXIL/DxilSigPoint.h"
+#include "dxc/HLSL/DxilSignatureAllocator.h"
+
+using namespace hlsl;
+using namespace llvm;
+
+#include "dxc/HLSL/DxilPipelineStateValidation.h"
+#include <functional>
+#include "dxc/HLSL/ViewIDPipelineValidation.inl"

+ 2 - 2
lib/HLSL/DxilTargetTransformInfo.cpp

@@ -14,8 +14,8 @@
 //===----------------------------------------------------------------------===//
 
 #include "DxilTargetTransformInfo.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "llvm/CodeGen/BasicTTIImpl.h"
 
 using namespace llvm;

+ 9 - 8
lib/HLSL/DxilValidation.cpp

@@ -11,18 +11,18 @@
 
 #include "dxc/HLSL/DxilValidation.h"
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilContainer.h"
-#include "dxc/HLSL/DxilFunctionProps.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilContainer.h"
+#include "dxc/DXIL/DxilFunctionProps.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilUtil.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilUtil.h"
+#include "dxc/DXIL/DxilInstructions.h"
 #include "dxc/HLSL/ReducibilityAnalysis.h"
 #include "dxc/Support/WinIncludes.h"
 #include "dxc/Support/FileIOHelper.h"
-#include "DxilEntryProps.h"
+#include "dxc/DXIL/DxilEntryProps.h"
 
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/Analysis/CallGraph.h"
@@ -45,6 +45,7 @@
 #include "llvm/Analysis/PostDominators.h"
 #include "dxc/HLSL/DxilSpanAllocator.h"
 #include "dxc/HLSL/DxilSignatureAllocator.h"
+#include "dxc/HLSL/DxilPackSignatureElement.h"
 #include "dxc/HLSL/DxilRootSignature.h"
 #include <algorithm>
 #include <deque>

+ 4 - 4
lib/HLSL/HLMatrixLowerPass.cpp

@@ -13,12 +13,12 @@
 #include "dxc/HLSL/HLMatrixLowerPass.h"
 #include "dxc/HLSL/HLOperations.h"
 #include "dxc/HLSL/HLModule.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/HlslIntrinsicOp.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilModule.h"
 
 #include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/Module.h"

+ 4 - 4
lib/HLSL/HLModule.cpp

@@ -9,11 +9,11 @@
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilCBuffer.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilCBuffer.h"
 #include "dxc/HLSL/HLModule.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
 #include "dxc/HLSL/DxilRootSignature.h"
 #include "dxc/Support/WinAdapter.h"
 

+ 3 - 3
lib/HLSL/HLOperationLower.cpp

@@ -13,11 +13,11 @@
 #include <cmath>
 #include <unordered_set>
 
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/HLSL/HLMatrixLowerHelper.h"
 #include "dxc/HLSL/HLModule.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
 #include "dxc/HLSL/HLOperationLower.h"
 #include "dxc/HLSL/HLOperationLowerExtension.h"
 #include "dxc/HLSL/HLOperations.h"

+ 2 - 2
lib/HLSL/HLOperationLowerExtension.cpp

@@ -9,8 +9,8 @@
 
 #include "dxc/HLSL/HLOperationLowerExtension.h"
 
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include "dxc/HLSL/HLMatrixLowerHelper.h"
 #include "dxc/HLSL/HLModule.h"
 #include "dxc/HLSL/HLOperationLower.h"

+ 10 - 9
lib/HLSL/HLSignatureLower.cpp

@@ -10,16 +10,17 @@
 ///////////////////////////////////////////////////////////////////////////////
 
 #include "HLSignatureLower.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilSignatureElement.h"
-#include "dxc/HLSL/DxilSigPoint.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilSignatureElement.h"
+#include "dxc/DXIL/DxilSigPoint.h"
 #include "dxc/Support/Global.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
-#include "dxc/HLSL/DxilSemantic.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilSemantic.h"
 #include "dxc/HLSL/HLModule.h"
 #include "dxc/HLSL/HLMatrixLowerHelper.h"
 #include "dxc/HlslIntrinsicOp.h"
-#include "dxc/HLSL/DxilUtil.h"
+#include "dxc/DXIL/DxilUtil.h"
+#include "dxc/HLSL/DxilPackSignatureElement.h"
 
 #include "llvm/IR/IRBuilder.h"
 #include "llvm/IR/DebugInfo.h"
@@ -453,13 +454,13 @@ void HLSignatureLower::AllocateDxilInputOutputs() {
   if (packing == DXIL::PackingStrategy::Default)
     packing = pSM->GetDefaultPackingStrategy();
 
-  EntrySig.InputSignature.PackElements(packing);
+  hlsl::PackDxilSignature(EntrySig.InputSignature, packing);
   if (!EntrySig.InputSignature.IsFullyAllocated()) {
     HLM.GetCtx().emitError(
         "Failed to allocate all input signature elements in available space.");
   }
 
-  EntrySig.OutputSignature.PackElements(packing);
+  hlsl::PackDxilSignature(EntrySig.OutputSignature, packing);
   if (!EntrySig.OutputSignature.IsFullyAllocated()) {
     HLM.GetCtx().emitError(
         "Failed to allocate all output signature elements in available space.");
@@ -467,7 +468,7 @@ void HLSignatureLower::AllocateDxilInputOutputs() {
 
   if (props.shaderKind == DXIL::ShaderKind::Hull ||
       props.shaderKind == DXIL::ShaderKind::Domain) {
-    EntrySig.PatchConstantSignature.PackElements(packing);
+    hlsl::PackDxilSignature(EntrySig.PatchConstantSignature, packing);
     if (!EntrySig.PatchConstantSignature.IsFullyAllocated()) {
       HLM.GetCtx().emitError("Failed to allocate all patch constant signature "
                              "elements in available space.");

+ 5 - 5
lib/HLSL/WaveSensitivityAnalysis.cpp

@@ -12,14 +12,14 @@
 
 #include "dxc/HLSL/DxilValidation.h"
 #include "dxc/HLSL/DxilGenerationPass.h"
-#include "dxc/HLSL/DxilOperations.h"
-#include "dxc/HLSL/DxilModule.h"
-#include "dxc/HLSL/DxilShaderModel.h"
-#include "dxc/HLSL/DxilContainer.h"
+#include "dxc/DXIL/DxilOperations.h"
+#include "dxc/DXIL/DxilModule.h"
+#include "dxc/DXIL/DxilShaderModel.h"
+#include "dxc/DXIL/DxilContainer.h"
 #include "dxc/Support/Global.h"
 #include "dxc/HLSL/HLOperations.h"
 #include "dxc/HLSL/HLModule.h"
-#include "dxc/HLSL/DxilInstructions.h"
+#include "dxc/DXIL/DxilInstructions.h"
 
 #include "llvm/ADT/ArrayRef.h"
 #include "llvm/IR/LLVMContext.h"

+ 1 - 1
lib/IR/Function.cpp

@@ -28,7 +28,7 @@
 #include "llvm/IR/Metadata.h"
 #include "llvm/IR/Module.h"
 #include "dxc/HLSL/HLModule.h" // HLSL Change
-#include "dxc/HLSL/DxilModule.h" // HLSL Change
+#include "dxc/DXIL/DxilModule.h" // HLSL Change
 #include "llvm/Support/ManagedStatic.h"
 #include "llvm/Support/RWMutex.h"
 #include "llvm/Support/StringPool.h"

+ 2 - 1
lib/LLVMBuild.txt

@@ -38,9 +38,10 @@ subdirectories =
  Target
  Transforms
  HLSL
+ DXIL
  DxrFallback
 
-; HLSL Change: remove LibDriver, LineEditor, add HLSL, add DxrtFallback
+; HLSL Change: remove LibDriver, LineEditor, add HLSL, add DxrtFallback, add DXIL
 
 [component_0]
 type = Group

+ 3 - 3
lib/Transforms/IPO/GlobalDCE.cpp

@@ -26,9 +26,9 @@
 #include "llvm/Pass.h"
 #include <unordered_map>
 #include "dxc/HLSL/HLModule.h" // HLSL Change
-#include "dxc/HLSL/DxilModule.h" // HLSL Change
-#include "dxc/HLSL/DxilOperations.h" // HLSL Change
-#include "dxc/HLSL/DxilInstructions.h" // HLSL Change
+#include "dxc/DXIL/DxilModule.h" // HLSL Change
+#include "dxc/DXIL/DxilOperations.h" // HLSL Change
+#include "dxc/DXIL/DxilInstructions.h" // HLSL Change
 using namespace llvm;
 
 #define DEBUG_TYPE "globaldce"

+ 1 - 1
lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp

@@ -20,7 +20,7 @@
 #include "llvm/IR/MDBuilder.h"
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
 #include "llvm/Transforms/Utils/Local.h"
-#include "dxc/HLSL/DxilOperations.h"   // HLSL Change - avoid unpack for dxil types.
+#include "dxc/DXIL/DxilOperations.h"   // HLSL Change - avoid unpack for dxil types.
 using namespace llvm;
 
 #define DEBUG_TYPE "instcombine"

+ 1 - 1
lib/Transforms/Scalar/GVN.cpp

@@ -51,7 +51,7 @@
 #include "llvm/Transforms/Utils/Local.h"
 #include "llvm/Transforms/Utils/SSAUpdater.h"
 #include <vector>
-#include "dxc/HLSL/DxilConstants.h"  // HLSL Change
+#include "dxc/DXIL/DxilConstants.h"  // HLSL Change
 using namespace llvm;
 using namespace PatternMatch;
 

+ 1 - 1
lib/Transforms/Scalar/SROA.cpp

@@ -56,7 +56,7 @@
 #include "llvm/Transforms/Utils/Local.h"
 #include "llvm/Transforms/Utils/PromoteMemToReg.h"
 #include "llvm/Transforms/Utils/SSAUpdater.h"
-#include "dxc/HLSL/DxilUtil.h"  // HLSL Change - not sroa resource type.
+#include "dxc/DXIL/DxilUtil.h"  // HLSL Change - not sroa resource type.
 
 #if __cplusplus >= 201103L && !defined(NDEBUG)
 // We only use this for a debug check in C++11

+ 5 - 5
lib/Transforms/Scalar/ScalarReplAggregatesHLSL.cpp

@@ -48,14 +48,14 @@
 #include "llvm/Transforms/Utils/SSAUpdater.h"
 #include "llvm/Transforms/Utils/Local.h"
 #include "dxc/HLSL/HLOperations.h"
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include "dxc/HLSL/HLModule.h"
-#include "dxc/HLSL/DxilUtil.h"
-#include "dxc/HLSL/DxilModule.h"
+#include "dxc/DXIL/DxilUtil.h"
+#include "dxc/DXIL/DxilModule.h"
 #include "dxc/HlslIntrinsicOp.h"
-#include "dxc/HLSL/DxilTypeSystem.h"
+#include "dxc/DXIL/DxilTypeSystem.h"
 #include "dxc/HLSL/HLMatrixLowerHelper.h"
-#include "dxc/HLSL/DxilOperations.h"
+#include "dxc/DXIL/DxilOperations.h"
 #include <deque>
 #include <unordered_map>
 #include <unordered_set>

+ 1 - 1
lib/Transforms/Utils/Local.cpp

@@ -45,7 +45,7 @@
 #include "llvm/Support/MathExtras.h"
 #include "llvm/Support/raw_ostream.h"
 
-#include "dxc/HLSL/DxilMetadataHelper.h" // HLSL Change - combine dxil metadata.
+#include "dxc/DXIL/DxilMetadataHelper.h" // HLSL Change - combine dxil metadata.
 using namespace llvm;
 
 #define DEBUG_TYPE "local"

+ 1 - 1
tools/clang/include/clang/AST/HlslTypes.h

@@ -19,7 +19,7 @@
 #include "clang/AST/Type.h"             // needs QualType
 #include "clang/Basic/SourceLocation.h"
 #include "clang/Basic/Specifiers.h"
-#include "dxc/HLSL/DxilConstants.h"
+#include "dxc/DXIL/DxilConstants.h"
 #include "dxc/Support/WinAdapter.h"
 #include "llvm/Support/Casting.h"
 

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff