Add reducibility analysis to the list of passes and paramless ctor.
This restores the property of having all passes initialized at DLL load time, keeps the reported list of passes stable, and fixes an assertion when the DLL is loaded on a thread but the first compile invocation occurs in a different thread.
1. enable unsigned keyword for [int,min16int,int64] vectors and matrices
(e.g. unsigned int2 -> vector<unsigned int, 2>)
2. disable unsigned keyword as a complete type specifier
This commit makes the necessary changes to run the project with AppVeyor
CI. The `appveyor.yml` file contains the configuration settings for the
build. Currently we only build x64-Debug, but we can build the full
x32/x64-Debug/Release matrix by adding a few lines to the config.
The remaining changes are somewhat tied to the specifics of how appveyor
provisions the build machines. The standard VS2015 machines build on
Windows Server 2012. We can build on these machines, but cannot run tests
because we require d3d12.dll which is not available on Windows Server
2012. However, it is present on Windows Server 2016, but appveyor only
provides VS2017 on those machines. So part of the changes are to allow
the compiler to build with VS2017 so we can run tests as part of CI.
The `appveyor_setup.ps1` script installs the WDK as part of the build.
This is the only extra software we need. It is actually installed on the
VS2015 build machines, but not our VS2017 build machines. Perhaps we can
get them to install it by default and then this script can go away.
The `appveyor_test.ps1` script runs the taef tests and then reports the
results to appveyor so they can be displayed on the "Tests" tab.
As a side effect of this work, We can now use the latest cmake (3.7.2) for
our own builds! The key seems to be setting
`-DCMAKE_SYSTEM_VERSION=10.0.14393.0` to ensure that we pick up the
correct SDK.
Previously, If an extension uses the replication lowering strategy
and a non-vector overload was chosen we would return the function
un-modified. This change makes sure that we still use the
custom lowering name for the extension if one was specified.
This commit adds a standalone class for expanding macros and uses it
to for root signature and semantic define processing. Previously,
we were using the raw macro value instead of the expanded value
so something like:
#define MYRS "DescriptorTable(SRV(t0))"
#define RS MYRS
would fail to compile the root signature with an entry point of
RS because it would get a root signature value of MYRS instead
of the expanded value. Similarly, for semantic defines we were
saving the non-expanded value into the bitcode.
This commit also adds a new flag that is used to specify that
the root signature should be read from a #define. So compiling
with `-rootsig-define RS` will read the root signature from
a `#define RS ...` in the source. The -roosig-define flag
takes precedence over a root signature annotation in the souce.
The prior version was using WaveGetLaneCount to determine active lanes.
This is incorrect for the following reasons.
First, it includes inactive lanes on the wave. This was not the intent.
Second, it compared this number with (presumed) active lanes in a quad.
The test is fixed to sum active lanes across a wave or quad instead.
Improves xml-based tests to allow existing devices to be used.
Improves dxexp to print out SM6/wave/i64 support under experimental mode.
Bumps the hctversion to 0.7
python 2.7 is now looked for the same way other dependencies are.
Improves logging as well by providing minimal console output during
build, while providing a file logger with additional details.
* Don't generate decl for effect object to avoid codegen crash.
* Add technique11 and rewriter test for effect.
* Skip the initializer of effect object.
* Only promote local resource when has store of handle.
* Report error when cannot map local resource usage to global resource.
* Promote static resource when optimization is disabled too.
* Take care PHINode on local resource.
* Treat half suffixes as floats
treat h/H suffixes as f/F as "half" scalar type is converted to float type.
This should be changed in the future when we support true half types.
python 2.7 is now looked for the same way other dependencies are.
Improves logging as well by providing minimal console output during
build, while providing a file logger with additional details.