This can cause interface incompatibility and should only be done
if ADCE has been applied to the following shader in the pipeline.
For this reason this capability is not available through the CLI
but rather only non-default through the API. This functionality is
intended as part of a larger cross-shader dead code elimination
sequence.
Constexpr guaranteed no runtime init in addition to const semantics.
Moving all opt/ to constexpr.
Moving all compile-unit statics to anonymous namespaces to uniformize
the method used (anonymous namespace vs static has the same behavior
here AFAIK).
Signed-off-by: Nathan Gauër <brioche@google.com>
Safe version will only optimize vertex shaders. All other shaders will
succeed without change.
Change --eliminate-dead-input-components to use new safe version.
Unsafe version (allowing non-vertex shaders) currently only available
through API. Should only be used in combination with other optimizations
to keep interfaces consistent. See optimizer.hpp for more details.
Add a flags field at the first offset within this buffer.
Define flags to allow buffer OOB checking to be enabled or
disabled at run time. This is to support VK_EXT_pipeline_robustnes.
This pass eliminates components of output variables that are not stored
to. Currently this just eliminates trailing components of arrays and
structs, all of which are dead.
WARNING: This pass is not designed to be a standalone pass as it can
cause interface incompatibiliies with the following shader in the
pipeline. See the comment in optimizer.hpp for best usage. This pass is
currently available only through the API; it is not available in the CLI.
This commit also fixes a bug in CreateDecoration() which is part of the
system of generating SPIR-V from the Type manager.
This adds two passes to accomplish this: one pass to analyze a shader
to determine the input slots that are live. The second pass is run on
the preceding shader to eliminate any stores to output slots that are
not consumed by the following shader.
These passes support vert, tesc, tese, geom, and frag shaders.
These passes are currently only available through the API.
These passes together with dead code elimination, and elimination of
dead input and output components and variables (WIP), will allow users
to do dead code elimination across shader boundaries.
Fixes#4918
* Prevent block merging from producing an invalid case construct by
merging a switch target/default with another construct's merge or
continue block
* This is to satisfy the structural dominance requirement between the
switch header and the case constructs
Fixes#4671
Fixes https://crbug.com/oss-fuzz/43265
* Only validate full layout in a vulkan environment
* Universal validation still checks that the right decorations are
present, but the values are only considered for vulkan
* One exception is that invalid overlaps are only checked for vulkan
* This is a pragmatic choice as SPIR-V doesn't define the size of
types so the amount of universal checking would be quite limited
* Removed redundant check for GLSLShared and GLSLPacked decorations
* Should never have been validated as part of universal validation
* make conditionals independent
Fixes https://crbug.com/oss-fuzz/48553
* Assign a reflexive dominator if no other dominator can be found using
forward traversals
* This prevents a null dereference of a pointer in the sorting of the
output
4bd8fc0c8c...85a1ed200d
$ git log 4bd8fc0c8..85a1ed200 --date=short --no-merges --format='%ad %ae %s'
2022-10-05 dkoch Fix extension for RayTracingOpacityMicromapEXT
2022-10-04 kpet Add support for texel buffers to clspv non-semantic instruction set
2022-10-04 hugo registered ID for Shady
2022-08-23 ewerness VK_EXT_opacity_micromap
Created with:
roll-dep external/spirv-headers
5723bb8950...d2836d1b1c
$ git log 5723bb895..d2836d1b1 --date=short --no-merges --format='%ad %ae %s'
2022-10-10 jimquinn custom comparator for prefilter exact strings
2022-10-06 jimquinn reduce string copies in prefilter
2022-09-14 junyer Update Unicode data to 15.0.0.
2022-08-26 junyer Add Clang 15 to the build matrix.
2022-08-24 junyer Document why `RE2` objects are neither copyable nor movable.
2022-08-08 junyer Address some more `-Wunreachable-code` warnings.
2022-08-05 junyer Attempt to address some `-Wunreachable-code` warnings.
2022-08-04 junyer Remove the use of `six` from `unicode.py`.
2022-08-03 junyer Remove guards for SWIG.
2022-06-03 hannahshisfb fix 64 to 32 bit clang conversion warning
2022-05-31 junyer Optimise the layout of the `RE2` class.
Created with:
roll-dep external/re2
548b13dc3c...d9bb8412d6
$ git log 548b13dc3..d9bb8412d --date=short --no-merges --format='%ad %ae %s'
2022-10-07 ferenc.gm Suggests a release with fixed CMakeLists.txt
2022-10-07 absl-team Update the POSIX Extended section of the Regular Expression Wikipedia page
2022-10-06 absl-team [fuchsia] Use __builtin_trap to trigger gunit_break_on_failure on non-x86 arch
2022-10-05 absl-team Makes Clang compilations via Ninja on Windows define _DLL only for shared CRT builds, as one would already expect from MSVC builds. (Previously, static Clang/Ninja builds on Windows also implicitly defined _DLL, which was problematic.)
2022-09-30 absl-team Uses a simpler mechanism to disable the copying of GoogleTest test suites, to move code out of the TEST_P macro.
2022-09-28 absl-team Rollback: Moves boilerplate disabling copy constructor/assignment from GoogleTest's TEST_P macro into a header file to avoid triggering warnings in user code.
2022-09-28 absl-team Rollback: Uses a simpler mechanism to disable the copying of GoogleTest test suites.
2022-09-28 absl-team Uses a simpler mechanism to disable the copying of GoogleTest test suites.
2022-09-28 absl-team Moves boilerplate disabling copy constructor/assignment from GoogleTest's TEST_P macro into a header file to avoid triggering warnings in user code.
2022-09-27 absl-team Add GoogleTest workaround for MSVC crash with Address Sanitizer (ASAN) on version 17.3.3
2022-09-27 cclauss Branding: macOS
2022-09-27 cclauss Upgrade GitHub Actions Checkout
2022-09-20 maratek Port GoogleTest to QuRT (Hexagon RTOS)
2022-09-18 426690+softwaregravy Update link to Bazel installation guide
2022-09-13 dmauro Fix MSVC C++14 flag for GitHub workflow
2022-09-13 dmauro Rollback 4fa8cfe3f4dee8975ee02d98633a5245ab67c6d7
2022-09-09 absl-team Use UnorderedElementsAre in example about using matchers with maps
2022-09-08 absl-team Remove obsolete MSVC warning pragmas for Invalid<T>()
2022-09-01 absl-team Fixed header guards to match style guide conventions.
2022-08-26 absl-team Consider all TERM values ending in "-256color" to be color supporting. In particular this handles TERM=hterm-256color correctly.
2022-08-22 hardikv Add support of 19-member structs to gmock UnpackStructImpl.
2022-08-19 keithbsmiley bazel: move -std=c++14 to .bazelrc
2022-08-16 dmauro Update README.md to point to the Foundational C++ Support Policy
2022-08-12 dmauro Add --features=external_include_paths to Bazel CI to ignore warnings from dependencies
2022-08-08 dinor gtest_unittest: Call FAIL() in lambda, fix incorrect fatality expectation
2022-08-04 dinor Explicitly instantiate matchee std::string in MatchesRegex
2022-07-31 bmburstein Custom type with Combine(). Fix for #3781
2022-07-28 absl-team Add support of 18-member structs to gmock UnpackStructImpl.
2022-07-25 dinor Add IsEmpty overload for C-style strings
2022-07-21 thegeorg Continuation for #3183
2022-07-20 matdibu gtest-death-test: add 'noreturn'
2022-06-28 dev Set cmake policy CMP0069
2022-07-14 polushin export ThreadLocalValueHolderBase which is required by exported APIs.
2022-07-11 polushin cmake: make PDB output directory match that of a static library.
2022-07-11 polushin cmake: find python in order specified by PATH environment variable.
2022-07-11 dmauro Add envvar BAZEL_CXXOPTS=-std=c++14 to the GitHub Actions CI
2022-07-08 dmauro CMake: raise the default C++ standard to cxx_std_14
2022-07-07 ckennelly Enable heterogeneous lookup for RegisteredTestsMap.
2022-07-01 nikiforov.al cleanup from unique_ptr branch
2022-07-01 dmauro Remove the Bazel provided default cxxopt -std=c++0x and replace it with -std=c++14 when testing with GCC 5.
2022-07-01 57719497+yutotnh fix: some typos in source
2022-07-01 57719497+yutotnh fix: typo in test name
2022-07-01 57719497+yutotnh fix: some typos in comment
2022-06-30 dmauro Remove support for C++11
2022-06-30 dmauro Update version number in CMakeLists.txt Note that this is 1.12.1 as there will be a patch release to fix this
2022-06-29 absl-team Add support of 17-member structs to gmock UnpackStructImpl.
2022-06-27 absl-team Mark internal-only function as having internal linkage.
2022-06-27 93249401+assafpr Update gtest.cc
2022-06-27 93249401+assafpr Update gmock-matchers.h
2022-06-27 93249401+assafpr Update gmock-actions.h
2022-06-27 93249401+assafpr Update gmock-spec-builders_test.cc
2022-06-27 93249401+assafpr Update gtest-death-test.cc
2022-06-27 93249401+assafpr Update gmock-spec-builders.cc
2022-06-27 93249401+assafpr Update advanced.md
2022-06-26 asmodai27 Avoid implicit conversion from int to char
2022-06-26 asmodai27 Avoid implicit conversion from int to char
2022-06-25 julian.arkenau docs: update googletest README for release 1.12.0
2022-06-23 dmauro Update README.md for release 1.12.0
2022-06-22 dmauro Update versions of WORKSPACE dependencies
2022-06-22 93249401+assafpr documentation, change mater branch to main
2022-06-22 93249401+assafpr Update faq.md
2022-06-22 93249401+assafpr Update CONTRIBUTING.md
2022-06-22 93249401+assafpr documentation, change mater branch to main
2022-06-22 93249401+assafpr documentation, change mater branch to main
2022-06-22 93249401+assafpr Update gmock_output_test_golden.txt
2022-06-22 93249401+assafpr change link from master to main in documentation
2022-06-21 dmauro Update GCC floor container used by CI to fix the Bazel cache error
2022-06-16 dmauro Disable warning C4251 around refactored code
2022-06-13 absl-team gmock_cook_book.md: Delete superfluous statement from 2014.
2022-06-11 gpetit Move declaration of kStdOutFileNo and kStdErrFileno
2022-06-09 absl-team Update googletest docs to indicate that RE2 is now used for regexp implementation when building with Bazel and using Abseil.
2022-06-09 absl-team Remove undefined internal function. Fixes#3856
2022-06-01 dmauro Work around a maybe-uninitialized warning under GCC 12
2022-05-31 gpetit Fix for undefined symbol: testing::internal::Random::kMaxRange
2022-05-30 gpetit Simplify ColoredPrintf to rely on ShouldUseColor
2022-05-30 gpetit Fix "unused variable" warning
2022-05-18 akohlmey set -utf-8 flag only for real MSVC compilers. E.g. not Intel's icx.exe
2022-03-26 perez.cs Fix quickstart-cmake documentation
Created with:
roll-dep external/googletest
Following #4958
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
Change-Id: I0aed90dbd5705881a5f68d439f9d191d5d01c993
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
* Support Narrow Types in BitCast Folding Rule
This change adds support for narrow types in the BitCastScalarOrVector
folding rule. According to Section 2.2.1 of the SPIR-V spec, types that
are narrower than 32 bits are automatically either sign extended, or
zero extended depending on the type. With that guaranteed, we should
be able to use the first 32-bit word of any narrow type for the folding
logic without performing any special conversions.
In order to reduce code duplication, this change moves the
GetU32BitValue and GetU64BitValue functions from IntConstant to
ScalarConstant. Without this move, we would have needed an identical
version of GetU32BitValue on FloatConstant.
* Add Tests for 16-bit BitCast Folding
This change adds several new test cases to the
IntegerInstructionFoldingTest which trigger the 16-bit BitCast logic.
The logic for half types was also added to the integer case since we
can't easily validate half float types in C++ code. It's easier to
validate them as unsigned integers instead. Pllus this also allows us
to verify the SPIR-V constant sign extension logic too.
* Add 8-Bit Folding Test Cases
This change adds a couple more test cases to the integer instruction
folding test suite in order to ensure that the BitCast logic also
works correctly with the Int8 shader capability.
The always-friendly messages make it harder to debug when the
disassembly is later generated without friendly names.
Additionally, the friendly-name-mapper is slow. Disabling it improves
performance of an ANGLE test that creates numerous shaders by ~5%.
Half the messages used to output 'id[%name]' and half id[%name]. With
this change, all messages consistently output 'id[%name]'. Some typos
are also fixed in the process.
This was spotted in the Validation Layers where OpSpecConstantOp %x CompositeExtract %y 0 was being folded to a constant, but anything that was using it wasn't recognizing it as a constant, the simple fix was to add a const_mgr->MapInst(new_const_inst); so the next instruction knew it was a const
* Remove `spvOpcodeTerminatesExecution`
This function is the same as `spvOpcodeIsAbort` except for
OpUnreachable. The names are so close in meaning that it is hard to
distinguish them. I've removed `spvOpcodeTerminatesExecution` since it
is used in only a single place. I've special cased OpUnreachable in
that location.
At the same time, I fixed up some comments related to the use of the
TerminatesExecution and IsAbort functions.
Following up on #4930.
* Fix comments
Removed now unused DebugDeclare visibility logic for generating
DebugValue.
Also eliminated the phi sort introduced in 272e4b3. This should have
been removed in the first commit.