diff options
| author | jsmall-nvidia <jsmall@nvidia.com> | 2021-09-10 16:31:26 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-09-10 13:31:26 -0700 |
| commit | 27ce5eb0de9f792f3e433bcb239c07d79371cf45 (patch) | |
| tree | bb85155ceafd280a3931432141fc1cc1dae20959 /source/slang | |
| parent | 28adf8917e53953dbfebd746410a427a55eed814 (diff) | |
First Slang LLVM integration (#1934)
* #include an absolute path didn't work - because paths were taken to always be relative.
* First integration with 'slang-llvm'.
* Fix project.
* Fix test output.
* First pass assert support.
* Add inline impls for min and max.
* Add abs inline abs impl for llvm.
* Make abs not use ternary op
* Fix typo in slang-llvm.h
* Sundary fixes to make remaining tests using llvm backend pass.
Diffstat (limited to 'source/slang')
| -rw-r--r-- | source/slang/slang-check.cpp | 8 | ||||
| -rw-r--r-- | source/slang/slang-compiler.cpp | 9 | ||||
| -rwxr-xr-x | source/slang/slang-compiler.h | 3 |
3 files changed, 13 insertions, 7 deletions
diff --git a/source/slang/slang-check.cpp b/source/slang/slang-check.cpp index 55306a0da..74e30cf8d 100644 --- a/source/slang/slang-check.cpp +++ b/source/slang/slang-check.cpp @@ -12,12 +12,7 @@ namespace Slang { namespace { // anonymous - struct FunctionInfo - { - const char* name; - PassThroughMode compilerType; - }; - + class SinkSharedLibraryLoader : public RefObject, public ISlangSharedLibraryLoader { public: @@ -101,6 +96,7 @@ namespace Slang getOrLoadDownstreamCompiler(PassThroughMode::Clang, sink); getOrLoadDownstreamCompiler(PassThroughMode::Gcc, sink); getOrLoadDownstreamCompiler(PassThroughMode::VisualStudio, sink); + getOrLoadDownstreamCompiler(PassThroughMode::LLVM, sink); } // Mark that we have tried to load it diff --git a/source/slang/slang-compiler.cpp b/source/slang/slang-compiler.cpp index 513f9623d..9f10876a0 100644 --- a/source/slang/slang-compiler.cpp +++ b/source/slang/slang-compiler.cpp @@ -480,6 +480,7 @@ namespace Slang { return SourceLanguage::GLSL; } + case PassThroughMode::LLVM: case PassThroughMode::Clang: case PassThroughMode::VisualStudio: case PassThroughMode::Gcc: @@ -493,6 +494,7 @@ namespace Slang { return SourceLanguage::CUDA; } + default: break; } SLANG_ASSERT(!"Unknown compiler"); @@ -1791,6 +1793,13 @@ namespace Slang ComPtr<ISlangBlob> blob; if (SLANG_FAILED(result.getBlob(blob))) { + if (targetReq->getTarget() == CodeGenTarget::HostCallable) + { + // Some HostCallable are not directly representable as a 'binary'. + // So here, we just ignore if that appears the case, and don't output an unexpected error. + return; + } + SLANG_UNEXPECTED("No blob to emit"); return; } diff --git a/source/slang/slang-compiler.h b/source/slang/slang-compiler.h index 4ed30ed28..a7903dd5a 100755 --- a/source/slang/slang-compiler.h +++ b/source/slang/slang-compiler.h @@ -979,7 +979,8 @@ namespace Slang VisualStudio = SLANG_PASS_THROUGH_VISUAL_STUDIO, ///< Visual studio compiler Gcc = SLANG_PASS_THROUGH_GCC, ///< Gcc compiler GenericCCpp = SLANG_PASS_THROUGH_GENERIC_C_CPP, ///< Generic C/C++ compiler - NVRTC = SLANG_PASS_THROUGH_NVRTC, + NVRTC = SLANG_PASS_THROUGH_NVRTC, ///< NVRTC CUDA compiler + LLVM = SLANG_PASS_THROUGH_LLVM, ///< LLVM 'compiler' CountOf = SLANG_PASS_THROUGH_COUNT_OF, }; void printDiagnosticArg(StringBuilder& sb, PassThroughMode val); |
