Граф коммитов

3519 Коммитов

Автор SHA1 Сообщение Дата
Atte Seppälä b930b5fa43
Enable legalization when the vk::image_format attribute is used (#4048)
- Legalization is required to propagate the correct type of the OpLoad even when
the resource variables are not being passed or assigned
- This fixes a validation error in simple shaders using image_format, where legalization
would not be needed otherwise

Co-authored-by: Atte Seppälä <atte.seppala@ul.com>
2021-10-29 14:46:27 -04:00
JiaoluAMD 1629096dc4
[SPIRV] Add support of [[vk::ext_decorate]] (#4035)
related to
issue:https://github.com/microsoft/DirectXShaderCompiler/issues/3919

Add support to these two attributes:
 [[vk::ext_decorate(decoration, … int literal)]]
 [[vk::ext_decorate_string(decoration, … string literals)]]
2021-10-29 10:26:24 -04:00
Chris B 344953a469
NFC. Cleanup CMake warnings (#4045) 2021-10-28 18:33:17 -05:00
Jaebaek Seo e343bec685
[spirv] Support flattening descriptor array accessed by var index (#4042)
The existing DXC cannot a flatten descriptor array when an instruction
accesses it using a variable index, because spirv-opt
--descriptor-scalar-replacement pass did not support it. spirv-opt
recently added --replace-desc-array-access-using-var-index that replaces
accesses to descriptor arrays using variable indices with accesses to
constant elements using switch statements. This commit uses the newly
added pass to support flattening all descriptor arrays.
2021-10-28 10:16:05 -04:00
Greg Fischer 4652250d54
Add Shader.DebugInfo.100 support for DebugSourceContinued (#4030) 2021-10-27 12:28:01 -04:00
Xiang Li 53ccb3adce
Support vs2022 build. (#4031)
* Support vs2022 build.
Still some issues like dndxc not work.
2021-10-26 08:38:29 -07:00
Chris B 6c2accf9ab
Conditionalize dxilconv pass inclusion in opt (#4034)
* Conditionalize dxilconv pass inclusion in opt

DXC can be built without dxilconv, so we need to handle the case
where dxilconv is not included but we still want opt for lit tests.

We will also need to surface dxilconv as a lit feature, but that can
come later when I get the lit tests running.

* Fixing dependencies for IR and DXIL libs

IR doesn't actually need dxil, and dxil doesn't actually need IPA.
2021-10-25 14:20:16 -05:00
Chris B 22cd9f4633
Convert Windows 1252 to UTF-8 (#4033)
These testcases all had a Windows 1252 ü character instead of a utf-8
character. Converting to utf-8 makes the world happy :)
2021-10-25 09:10:41 -05:00
Xiang Li b1b3e858d7
Fix issue when index is not 32bit in NonUniformResourceIndex. (#4027) 2021-10-22 10:10:13 -07:00
Vishal Sharma 1c2cff805f
Stop adding unintended LLVM function attributes (#3992)
* Remove unintended LLVM function attributes

* Update test
2021-10-22 08:31:33 -07:00
Chris B 3d17803bad
Enable building LLVM testing tools (#4023)
* Enable building LLVM testing tools

This gets a bunch of the LLVM testing tools building, which allows us
to run the LIT tests (which have a lot of failures)

* Fixing broken Linux and Windows builds

* Removing a change that snuck in.
2021-10-21 11:31:31 -05:00
Chris B 030b77398b
Change FileCheck flag from -input to -input-file (#4024)
FileCheck's actual flag is named -input-file. This change is one step
toward getting the FileCheck tests to run with FileCheck.
2021-10-20 22:50:02 -05:00
Chris B 026c192ca0
Adding line ending settings to .gitattributes (#4026)
* Adding line ending settings to .gitattributes

This should make it so that cmd and bat files are always crlf and sh and
config.guess are always lf.

* Kicking this file...

* Undoing the last change
2021-10-20 20:58:43 -05:00
Chris B 0a0ed9f50b
Make it possible to enable building LLVM & Clang unit tests (#4020)
* Changes to get LLVM unit tests building

This change gets the LLVM unit tests building again and running through
LIT via the `check-llvm-unit` target.

This change does not have the tests passing! Subsequent changes will
get the unit tests passing. This change also disables some tests where
the LLVM code is no longer used and making those tests work will
require substantial effort.

* Changes to get Clang unit tests building

This change gets the Clang unit tests building again and running
through LIT via the `check-clang-unit` target.

This change does not have the tests passing! Subsequent changes will
get the unit tests passing. This change also disables some tests where
the Clang code is no longer used and making those tests work will
require substantial effort.

* A few extra Windows fixes

This adds some missing APIs to the Windows Filesystem code and adds an
option to hctbuild to enable building the LLVM & Clang unit tests.

* Disable libClangFormat tests

These tests are a bit gnarly to repair... unless we really start using
the format library we probably just want to disable these tests.
2021-10-20 12:32:45 -05:00
Chris B 4ca3a04252
Restore LLVM Testing Infrastructure (#4012)
* Restore lit and googletest sources from LLVM 3.7.0

This commit just re-adds sources that were removed somewhere along the
way.

* Pull in googletest & googlemock from LLVM 4.0

Googlemock was introduced in LLVM 4.0, and is used by SPIR-V's tests.
This pulls in the LLVM 4.0 version of GoogleTest and GoogleMock to
replace the external submodules.

LLVM's version of GoolgeTest and GoogleMock have some minor extensions
to work better with LIT for error reporting and producing cleaner test
output.

* Remove external googletest

* Fix lit to handle comment in gtest names

This fix came into LLVM with the updated googletest in a977582dead2

* Ignore raw_fd_ostream errors when not closing

There's some odditites with the changes in the filesystem code that
cause this to error sometimes in unit tests. Until we can dedicate time
to looking into the filesystem code, just swallow that error...

* Fix bot failure

Missed an option change.

* Fixing MSVC build failure

* A cleaner build fix

This should address issues with VS 2019 in a cleaner way.

* Fix build
2021-10-19 15:24:11 -05:00
Greg Fischer 5f35caa480
[spirv] Add support for NonSemantic.Shader.DebugInfo.100 generation (#4006)
This commit generally only adds those instructions that intersect with
OpenCL.DebugInfo.100, although it does also add generation of
new DebugFunctionDefinition to tie DebugFunction to function.

Co-authored-by: baldurk <baldurk@baldurk.org>
2021-10-19 14:40:59 -04:00
Helena Kotas 03599a71c2
Update version to 1.6.2110 (#4016) 2021-10-18 14:08:58 -07:00
Chris B b4c09ea9fb
[templates] Instantiate HLSL Annotations (#4007)
* [templates] Instantiate HLSL Annotations

When instantiating decls, the HLSL annotations should be carried over
for any NamedDecls that have them.

This change resolves #4003

* Add test case covering HLSL annotations

This just adds a test case that covers a wide swath of HLSL annotations
and verifies that they all instantiate correctly.
2021-10-18 15:16:16 -05:00
Xiang Li e39defba07
Add rewrite pass to create global cb. (#4000)
* Add rewrite pass to create global cb.
2021-10-15 14:41:25 -07:00
Xiang Li 44e0509d89
Allow namespace in cbuffer. (#4013) 2021-10-15 10:28:26 -07:00
Chris B ff42fadd36
Fix triple normailization (#4009)
For the DirectX match we need an exact match otherwise this will match
against the `dxil` arch or `dxbc` as an object format (if we add it).
This will resolve a falure in the triple normalization unit test.
2021-10-14 22:59:25 -05:00
Greg Roth 7c6a6bc7aa
Only define global heap variables in 6.6+ (#4011)
RsourceDescriptorHeap and SamplerDescriptorHeap were predefined in all
shader models, not just 6.6+. By checking the shader model version
before declaring them, we can limit this to relevant shader models.

Added tests for 6.6 and 6.5 behavior when these are redefined
2021-10-14 15:48:54 -07:00
Jaebaek Seo ebdf8fbdb4
[spirv] update SPIRV-Tools and SPIRV-Headers submodules (#4010) 2021-10-14 16:54:24 -04:00
Chris B b392672be3
Fix llvm::BitVector::resize (#4008)
This bug has been latent for a long time, and was exposed by getting
the unit tests running again. When resizing the buffer we were not
copying all the bits. That's bad...
2021-10-14 15:18:03 -05:00
Chris B 4a2ea59d6a
Enable building llvm-dis (#3999)
* Enable building llvm-dis

llvm-dis is a lightweight tool for reading IR modules as bitcode and
dumping them as textual IR. It is useful for debugging and verification
of bitcode-related issues.

This patch just re-enables the llvm-dis build and updates the code to
build cleanly on *nix systems.

* Fix broken windows build

I need to cleanup the WinIncludes usage, but that can be a seprate PR.
2021-10-12 21:39:52 -05:00
Greg Roth 833657810a
Use a type-appropriate 2.0 for reflect (#3998)
The reflection calculation involves a multiply by two that was always
float, which caused an internal assert when the variable was not float.
Now the constant uses the type of the other operand
2021-10-12 10:33:37 -07:00
Adam Yang ac1683bb94
Better way to check if a CallInst is a debug inst (#3997) 2021-10-11 22:16:12 -07:00
Adam Yang 029634871a
-Zs now appears next to Zi in the help text (#3996) 2021-10-11 16:45:17 -07:00
Chris B 058640e4d4
[Templates] Resolve literal types to 32-bit types (#3994)
When resolving template argument types if the originating type is a
literal type (i.e. `literal float` or `literal int`), we should instead
substitute the appropriate 32-bit type.

This change is two pieces:

The first translates template arguments from `literal <x>` into the
appropriate 32-bit type after deduction but before generating the
instantiated decl for non-builtin templates.

The second part allows `literal <x>` template parameters to match
against the appropriate instantiated 32-bit types.

This resolves #3973.
2021-10-11 14:11:35 -05:00
Chris B f1d310bec7
Fix cast construction in template instantiation for Constant and Texture buffers (#3991)
* Revert "Fix crash in Sema::CheckDerivedToBaseConversion when Paths is
empty. (#3327)"

This reverts commit 2903170ac5, but keeps
the test case, as the test case is important.

* Generate FlatConversion for buffer member access

ConstantBuffers and TextureBuffers need to behave at the AST level as
if they implicitly convert to the underlying buffer data type.

We do this when generting the AST, but we don't have the proper
overrides in place in `Sema::PerformObjectMemberConversion`.

This is the root cause of issue #3327, so this change should be layered
on a revert of 2903170ac.

This also addresses #3972.

'beanz/beanz/constant-buffer-template-issue-3972'.
../tools/clang/test/HLSLFileCheck/hlsl/template/BufferInExpansion.hlsl

'beanz/beanz/constant-buffer-template-issue-3972'.
../tools/clang/test/HLSLFileCheck/hlsl/template/BufferInExpansion.hlsl

'beanz/beanz/constant-buffer-template-issue-3972'.
../tools/clang/test/HLSLFileCheck/hlsl/template/BufferInExpansion.hlsl
2021-10-11 11:14:35 -05:00
Adam Yang cb2743b546
Checking the called object is a function in MS validation. (#3995) 2021-10-07 17:12:39 -07:00
Greg Roth 66c0eeefdc
Properly handle parsed HLSL tokens (#3993)
Several instances of handling token strings made the assumption that
the strings were null terminated though they were not necessarily.

By changing the processing to using the full StringRef, the length is
used and the potential for reading invalid characters is eliminated

64-bit linux has 8 byte longs where Windows always uses 4 bytes. As a
result, the strings that exceeded the maximum 32-bit representation on
such platforms were not failing for extreme space/register values as
expected
2021-10-07 14:21:50 -07:00
Chris B b55eb88561
Convert cmake-predefined-config-params to cache (#3918)
CMake supports passing in CMake scripts via the `-C` command line
option, which can set CMake cache variables to initialize options
before the first CMakeLists file is processed. This is a portable and
shell-agnostic way of supporting what the
`cmake-predefined-config-params` file is used for.
2021-10-05 17:49:07 -05:00
Chris B 46d97b8cfe
[NFC] Silence a few new clang warnings (#3989)
Clang has added new warnings for possible unintended string
concatenations. When concatonating strings in an array literal warpping
the concatenation in parentesis quiets the warning.
2021-10-05 13:24:11 -05:00
Adam Yang 6a3ae13ff4
Od fixes sep2021 (#3990) 2021-10-05 03:28:21 -07:00
Jeff Noyle d23ede6fc5
PIX: Changes to run PIX passes on libraries. Also add raygen shader debugging prolog (#3985)
These changes are a result of prototype work in PIX to support shader debugging for DXR,, which was an exercise to figure out how to support libraries in general in PIX. These changes are the result. It's all about iterating over all the library functions, rather than "the" entry point function.
In addition, to have something concrete to submit to a driver, there's the addition of codegen for the shader debugging "prolog", which chooses at runtime whether or not to emit instrumentation data for a given shader invocation based on its (in this case) thread id. This last is not yet ready for production in PIX, in that it is necessary but not sufficient to enable DXR shader debugging.
2021-10-04 15:37:50 -07:00
Adam Yang 9b281d0de6
Fixed structurized return when there are phi's from shortcircuiting. (#3981) 2021-10-02 13:55:47 -07:00
Grace Jennings b44b76d1ad
Consistent order gradient ops warnings. (#3984)
Consistent order gradient ops warnings. Added order checking to existing tests.
2021-10-01 15:14:06 -07:00
Tex Riddell 6683f4d9f9
Fix missing RDAT function resource usage by recursing constant users (#3983)
Before module serialization, constant users of resource globals could themselves have multiple constant users. These could be consolidated through module serialization/deserialization, leading to a difference when only the first constant user was followed. The difference could lead to a validation failure only with external validator (DXIL.dll) since reconstructed RDAT would not match the original RDAT with the missing use. This would happen in cases such as identical constant indexing of resource arrays from multiple entries.

Also, fix groupshared usage detection when setting function compat flags for RDAT.
2021-10-01 12:14:36 -07:00
Tex Riddell 8235aac55d
Follow HLSL rule for shift ops during constant folding (#3976)
- Shift operators (Shl, LShr, AShr) use (RHS & (bitwidth-1))
  (5 LSB for 32-bit operation, 6 LSB for 64-bit operation)
2021-09-30 16:32:31 -07:00
Jaebaek Seo 71cffd43e2
[spirv] update SPIRV-Tools and SPIRV-Headers submodules (#3979) 2021-09-30 10:23:47 -04:00
Greg Roth c26f369b5c
Enable -HV 2021 (#3982)
Enables the associated feature flags when 2021 is selected. Also adds a
feature flag for bitfields.

Add to all feature tests a variant that uses -HV 2021

Made some small changes to a template test that relied on vector
operands with binary logical operators
2021-09-29 19:00:44 -07:00
Chris B 8a1e9700e2
[NFC] Add additional helper methods for DXT::ResourceKind (#3975)
* Added `IsAnyTextureArray`, `IsAnyTextureCube`, and `IsArrayKind`
helper
methods.
* Added test case for all non-trival `Is...(ResouceKind)` methods
2021-09-29 15:17:47 -05:00
Xiang Li 207cc4a694
Always update end scope when structurize returns. (#3977)
* Always update end scope when structurize returns.
2021-09-28 19:06:50 -07:00
Adam Yang abbcb9f14e
Fixed an assert when a dxil error happens with global variable (#3974) 2021-09-28 10:09:28 -07:00
JiaoluAMD de6a8ed4ae
[SPIRV] Add support of the GL_EXT_spirv_intrinsics (#3949)
[SPIRV] Add support of the GL_EXT_spirv_intrinsics

Related to the issue: https://github.com/microsoft/DirectXShaderCompiler/issues/3919
Add these attributes

vk::ext_capability
vk::ext_extension
vk::ext_instruction
vk::ext_reference
vk::ext_literal

Note this commit allows the redeclaration of a HLSL intrinsic function using a function declaration with `vk::ext_instruction`.

Co-authored-by: Jaebaek Seo <jaebaek@google.com>
2021-09-24 11:15:04 -04:00
Greg Roth f008085313
Merge pull request #3968 from microsoft/merge-hlsl2021-master
Merge hlsl2021 master
2021-09-23 10:51:09 -06:00
JiaoluAMD d5fb0499f0
Expand AttrKind from 8bit to 32 bits (#3967)
Attributes size exceeds to the limit of the 255, use 32 bit AttrKind
2021-09-23 09:34:39 -07:00
Tex Riddell 5d2a08ee30
Fix cbuffer variable usage in reflection for SM 6.6 (#3966) 2021-09-23 08:23:50 -07:00
Jeff Noyle 4b8202a7a7
PIX: Disambiguate mesh shader activity based on full XYZ dispatch paramete… (#3960)
PIX's mesh shader output instrumentation needs to disambiguate groups of mesh shader invocations, so that PIX can reconstruct the intended mesh after the fact. In the case where an amplification shader is present, the previous code was incomplete: it included only the X value of the mesh shader's group ID relative to the AS DispatchMesh call. The full XYZ value is needed. Unfortunately, this value does not necessarily fit into a single DWORD for returning to PIX via the instrumentation, but various spec constraints mean that the product of the group ID cube's dimensions will fit in a DWORD.
So this change expands the custom data added to the AS->MS payload to include the Y and Z group counts that the AS passed to DispatchMesh. The mesh shader can then multiply its group ID's component values by these counts in order to come up with a single unique group ID value.
2021-09-21 19:29:07 -07:00