We currently build the structured order for all nodes reachable from the
loop header when unrolling a loop. However, unrolling only needs the
nodes in the loop and possibly the merge node.
To avoid needless computation, I have implemented a search that will
stop at the merge node.
Fixes#4827
Uses a preprocessor macro to bail out of unrolling loops with large
iteration counts during fuzzing, to reduce the number of
timeouts/memouts that arise.
Related issue: #4728.
The code in `CFG::SplitLoopHeader` assumes the loop header is not the
latch. This leads to it not being able to find the latch block. This
has been fixed, and a test added.
Fixes#4527
If the predecessor blocks are the same, then there is only 1 value for the
OpPhi. The simplition pass will simplify it, and it causes problems for
if-conversion. In these cases, if-conversion can just punt.
Fixes#3554.
There is an assert that verifies that the binary did not change when the
optimizer said that it did not. However, if the input binary is in big endian
format, the optimizer will encode the optimized binary in little endian. This
causes the assert to fail. Since we do not believe that anybody cares about a
big endien formate, we will disable the assert in that case.
Fixes#4722
The Reciprocal function expects a divide-by-0 to return nan,and then Reciprocal will return 0.
Since the divide-by-0 is actually undefined, we will identify this case early, and return 0.
No new tests are needed because we already tests folding divide-by-0.
Fixes#4715
An access chain could have a constant index that is an out of bounds
access. This is valid spir-v, even if it can cause problems at runtime.
However, it is not valid to have an OpCompositeExtract with an out of
bounds access. This means we have to stop local-access-chain-convert
from making that change.
Fixes#4605
A std::set is used instead of std::vector, where the elements are
ordered by member index first. Decorations for fields are now looked up
by going over the range of decorations for the member only, instead of
the whole set.
In an ANGLE test that generates a struct with 4096 members, validation
goes down from ~140ms to ~90ms. On debug builds, the difference is more
pronounced, going down from ~2.5s to ~600ms.
0c5616df9c...5723bb8950
$ git log 0c5616df9..5723bb895 --date=short --no-merges --format='%ad %ae %s'
2022-05-09 junyer Add GCC 12 to the build matrix.
2022-04-11 junyer Switch to `cxx_std_11` as per best current practice.
2022-04-08 junyer Mea culpa. The `DCHECK` needs to be an `if`.
2022-04-08 junyer Use `size_t` to stop MSVC griping about conversion.
2022-04-08 junyer `#include` `<cmath>` instead of `<math.h>`.
2022-04-06 junyer Prune `PrefilterTree` edges instead of nodes.
Created with:
roll-dep external/re2
25dcdc7e8b...548b13dc3c
$ git log 25dcdc7e8..548b13dc3 --date=short --no-merges --format='%ad %ae %s'
2022-05-31 absl-team Fix internal files
2022-05-30 jacobsa gmock-spec-builders: remove the name for an unused parameter.
2022-05-27 jacobsa gmock-spec-builders: add support for non-moveable types.
2022-05-27 elixir Clarify that `this->` is needed to access members of type-parameterized tests.
2022-05-27 jacobsa gmock-actions: properly support non-moveable results in `is_callable_r`.
2022-05-26 jacobsa gmock-spec-builders: move a method to the header.
2022-05-25 absl-team Update GoogleTest documentation's spelling of "GoogleTest".
2022-05-24 absl-team Clarify the pitfalls of EXPECT_THAT and highlight it's best practices
2022-05-17 dinor gmock-internal-utils.cc: Avoid implicit conversion from int to char Fixes#3832
2022-05-12 jacobsa gmock-actions: add support for move-only values to Return.
2022-05-12 absl-team Add clarifying comments about when to use EXPECT_NONFATAL_FAILURE vs. EXPECT_FATAL_FAILURE.
2022-05-11 jacobsa gmock-actions: provide a const reference when converting in ReturnAction.
2022-05-10 absl-team Do a consistent way of searching for a temporary directory.
2022-05-10 jacobsa gmock-actions: simplify Return and add better documentation.
2022-05-10 jacobsa gmock-actions: make OnceAction public.
2022-05-10 absl-team Fixup some missing overrides in googletest.
2022-05-03 absl-team Fix example of DescribeMatcher to properly support negation.
2022-05-02 absl-team Use TEST_TMPDIR on MacOS as well if available.
2022-05-02 jacobsa gmock-actions: remove a no-longer-necessary friend declaration.
2022-05-02 jacobsa gmock-actions: support ByMove in a specialization of ReturnAction.
2022-04-30 ayush854032 Fix typo in the test name of `NormalizeTest`
2022-04-28 absl-team Rewrite "Testing a Certain Property of an Object" as "Defining a Custom Matcher Class", and fix the code examples.
2022-04-27 jacobsa gmock-actions: improve comments and tests for the implicit cast in Return.
2022-04-26 jacobsa Support move-only and &&-qualified actions in WithArgs.
2022-04-26 dmauro Use RE2 for the regex implementation when building with Bazel and using Abseil
2022-04-26 absl-team Generalize gmock-matchers_test to handle is_gtest_matcher-style matchers, too.
2022-04-26 jacobsa Support move-only and &&-qualified actions in DoAll.
2022-04-22 dmauro Remove the legacy internal GTEST_DISALLOW_* macros
2022-04-21 dmauro Eliminate the legacy GTEST_COMPILE_ASSERT_ macro
2022-04-20 mhommey Always initialize fields in MatcherBase constructors
2022-04-13 jacobsa Document two surprises in `DoAllAction::NonFinalType`.
2022-04-13 absl-team Replace infinite recursion call (intentionally invoking undefined behavior to indicate unreachability) with explicit unreachability marker.
2022-04-08 absl-team Add support for move-only and &&-qualified actions in WillOnce.
2022-04-06 52797899+MR-A0101 Removing commas.
2022-04-06 dmauro Clarify what live-at-head actually means
2022-04-04 absl-team Trying to make it more clear: this is probably not about mock classes, but about mocked classes
2022-04-04 absl-team gmock: improve SFINAE for actions involving arguments.
2022-04-04 absl-team Use ResultOf()'s result_description when explaining match result.
Created with:
roll-dep external/googletest
This change adds a folding rule which transforms x * y - a and a - x * y
into FMA(x, y, -a) and FMA(-x, y, a), respectively.
While the SPIR-V instruction count remains the same, target instruction
sets typically feature FMA instruction variants that can negate an
operand. Also this transformation may unlock further optimizations which
eliminate the negation.
(Google bug: b/226145988)
* Add move folding for composite instructions
Fold chains of insert into construct
If a chain of OpCompositeInsert instruction write to every element of a
composite object, then we can replace it with an OpCompositeConstruct.
Fold a construct fed by extracts to a single extract
We already fold an OpCompositeConstruct when it is simlpy reconstructing
an object that was decomposed by a series of OpCompositeExtract
instructions. However, we do not do that if that object is an element
of a larger object.
I have updated the rule, so that if the original object is a an element
of a larger object, then the OpCompositeConstruct is replaced with a
single OpCompositeExtract from the larger object.
Fixes#4371.
* Handle 64-bit integers in local access chain convert
The local access chain convert pass does on run on module that have
64-bit integers, even if they have nothing to to with access chains.
This is very limiting because other passes rely on the access chains
being removed. So this commit will add this functionality to the pass.
* Remove deprecated `--decompose-initialized-variables` from spirv-opt help message
* Remove deprecated --strip-atomic-counter-memory flag from spirv-opt help message
spirv validation require OpFunctionCall with memory object, usually this
is non issue as all the functions are inlined.
This pass deal with some case for
DontInline function. accesschain input operand would be replaced new
created variable
- Add assembler/disassembler support
- Add validator support
Signed-off-by: Kevin Petit <kevin.petit@arm.com>
Change-Id: Iffcedd5d5e636a0e128a5906ffe634dd85727de1
This reverts commit 671f6e633f.
PR #4783 was reverted because it caused OpenCL CTS failures for clvk.
The was in clspv, which was not adding the no contract decoration when
it was required. This has been fixed in
https://github.com/google/clspv/pull/845. We can now reapply #4783.
* linker: Recalculate interface variables
By resolving extern symbols Entry Points might access variables they
hadn't declared before.
* test/linker: add test to verify linked spir-vs importing functions validate
Without the fix Validate will complain about:
"ERROR: 9: Interface variable id <5> is used by entry point 'bar' id <1>, but is not listed as an interface\n %5 = OpVariable %_ptr_Input_v3uint Input\n"
Adding Fma instruction can speed up the code. This was requested by
swiftshader, so they do not have to do this analysis themselves. It can
also help reduce the code size, and the work the ICD compilers have to
do.
In the installed file
/usr/lib64/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake, occurences of
librt in the INTERFACE_LINK_LIBRARIES property are incorrect. The
property contains the absolute path to librt. In most situations, this
produces no problem. But when building in a sysroot, which is commonly
done when cross-compiling, the absolute path breaks dependent projects.
For example, when building spirv-tools using the Chrome OS SDK, and
targeting the board 'volteer', where the build sysroot is
'/build/volteer', the file includes this line
INTERFACE_LINK_LIBRARIES "/build/volteer/usr/lib64/librt.so"
when it should instead say
INTERFACE_LINK_LIBRARIES "rt"
The CMake documentation agrees [1]:
Note that it is not advisable to populate the
INTERFACE_LINK_LIBRARIES of a target with absolute paths to
dependencies. That would hard-code into installed packages the
library file paths for dependencies as found on the machine the
package was made on.
[1] https://cmake.org/cmake/help/latest/prop_tgt/INTERFACE_LINK_LIBRARIES.html
* Fix gen_build_version on Windows
The paths used in the gen_build_version script are causing some failures
in downstream builds. Switch to using the location of the CHANGES file
rather than the ".." parent directory workaround.
* Update other build files
6a55fade62...4995a2f272
$ git log 6a55fade6..4995a2f27 --date=short --no-merges --format='%ad %ae %s'
2022-03-03 nikita.kornev Remove extensions tag from instructions
2022-02-18 nikita.kornev Implement SPV_KHR_uniform_group_instructions extension
2022-02-12 ben.ashbaugh update SPIR-V headers for SPV_INTEL_split_barrier
2022-02-08 prokop regenerate headers
2022-01-31 gleese Add EXT tag to capability to DemoteToHelperInvocationEXT
2022-01-28 tdb Reserve enum range for MSP extensions
2022-01-05 prokop regenerate the headers
2022-01-04 prokop Include bool type for C
Created with:
roll-dep external/spirv-headers
611baecbce...0c5616df9c
$ git log 611baecbc..0c5616df9 --date=short --no-merges --format='%ad %ae %s'
2022-03-30 junyer Replace `StdIntMap` with `std::vector<int>`.
2022-03-24 junyer Use `std::unordered_map<int, int>` for `StdIntMap`.
2022-03-22 junyer Remove `xkcd.png`, which is disused.
2022-03-18 junyer Prog::Fanout() is no longer experimental.
2022-03-15 junyer Fall back to std::shared_mutex, not std::mutex.
2022-03-15 junyer Set CMAKE_CXX_STANDARD if we seem to need to set it. :/
2022-03-15 junyer Don't specify CMAKE_CXX_STANDARD anymore either.
2022-03-11 slyich Don't overwrite testinstall.cc in testinstall.
2022-03-03 junyer Add Clang 14 to the build matrix.
2022-02-24 junyer Simplify OS selection in Bazel by using @platforms.
2022-02-17 junyer Check __cpp_lib_string_view, not __cplusplus.
2022-01-27 junyer Oops, I think I needed pull_request_target instead.
2022-01-27 junyer Close all GitHub pull requests automatically.
2022-01-27 junyer Handle older macOS SDKs not defining TARGET_OS_OSX.
Created with:
roll-dep external/re2
f45d5865ed...25dcdc7e8b
$ git log f45d5865e..25dcdc7e8 --date=short --no-merges --format='%ad %ae %s'
2022-04-04 dmauro Use the Abseil flags library when Abseil is present
2022-03-23 absl-team Address deprecation warning surfaced by Github presubmit tests
2022-03-23 mattias.ellert Split gmock-matchers_test into 4 smaller test #3653
2022-03-22 absl-team Only print disabled test banner if the test matches gtest_filter
2022-03-21 absl-team Clarify public access on gmock examples.
2022-03-18 bmesser Remove sanity as it is offensive to neurodiverse individuals.
2022-03-15 absl-team Running clang-format over all of GoogleTest
2022-03-14 dinor Remove references to deleted script gen_gtest_pred_impl.py
2022-03-08 absl-team Mark ACTION_Pn()-generated functions as must-use-result, adding non-compilation tests.
2022-03-08 sobik.szymon Add myself to contributors
2022-03-08 sobik.szymon Adjust documentation regarding xml and json source file location otput.
2022-03-08 sobik.szymon Adjust xml and json unit tests to test for source file and line location.
2022-03-08 sobik.szymon Add support for testing of xml and json output of source file and line location
2022-03-08 sobik.szymon Output source file path and line number in xml and json files.
2022-02-17 dmauro Update GCC/Clang Linux tests to use Bazel 5.0.0
2022-02-14 absl-team Address conversion warning by explicitly casting to size_t
2022-02-09 absl-team Add a 3-arg overload for ResultOf() matcher that takes a description string for better error messages.
2022-02-05 hgsilverman Apply requested changes by using std::inserter with move.
2022-02-05 noiseless-ak Fix gtest-help-test failure on OpenBSD
2022-02-01 absl-team GetCurrentOsStackTraceExceptTop (both the method of UnitTestImpl and the wrapper function in gtest.cc) rely on the fact that the inner call is not getting optimized. This CL annotates them with the appropriate attributes.
2022-01-29 hgsilverman Do constant time matching for exact match filters.
2022-01-28 dmauro Finish some missed pieces of the TestCase to TestSuite Migration
2022-01-26 dinor Change `ReturnArg` to use perfect forwarding of arguments (#3733)
2022-01-25 melroy Let me give a change to try it again - updating to latest version
2022-01-05 73706994+jjfvanderpol Set CMake Policy CMP0077 to NEW
2021-10-19 deniz CMake: Fix values of INTERFACE_INCLUDE_DIRECTORIES property
Created with:
roll-dep external/googletest