Commit Graph

2634 Commits

Author SHA1 Message Date
Jaebaek Seo
d4b9f576eb
[spirv-opt] debug info preservation in ssa-rewrite (#3356)
Add OpenCL.DebugInfo.100 `DebugValue` instructions for store
and phi instructions of local variables to provide the debugger with
the updated values of local variables correctly.
2020-06-19 14:57:43 -04:00
Ehsan
2a1b8c0622
Updated desc_sroa to support flattening structures (#3448)
Not all structures should be flattened.  Code patterns used by DXC are used to create checks for which structures should be flattened.
2020-06-19 14:35:18 -04:00
Vasyl Teliman
33cf7c425a
spirv-fuzz: Refactor variable creation (#3414)
Fixes #3413.
2020-06-19 16:40:18 +01:00
Vasyl Teliman
d5306c8e8f
spirv-fuzz: Swap operands in OpBranchConditional (#3423)
Fixes #3415.
2020-06-19 16:38:52 +01:00
Steven Perron
545d158a2f
Use structured order to unroll loops. (#3443)
Fixes #3441
2020-06-18 16:00:34 -04:00
Jaebaek Seo
5342930f91
Debug info preservation in dead branch elimination (#3425)
* Debug info preservation in dead branch elimination

The DeadBranchElimPass class already handles the OpenCL.DebugInfo.100
instructions correctly. This commit just adds a unit test to make sure
it preserves the information properly.

* Add unit test of ReplaceAllWith for debug instruction
2020-06-18 14:55:45 -04:00
Vasyl Teliman
99651228b2
Add RemoveParameter method (#3437) 2020-06-17 10:15:50 -04:00
Vasyl Teliman
57d9e360c6
Fix return type (#3435) 2020-06-17 10:10:06 -04:00
Ehsan
a7112d544b
Eliminate branches with condition of OpConstantNull (#3438) 2020-06-16 13:31:03 -04:00
André Perez
9494703546
spirv-fuzz: Implement vector shuffle fuzzer pass (#3412)
Fixes #3108.
2020-06-16 11:21:31 +01:00
André Perez
12a4fb3bc1
spirv-fuzz: Add replace linear algebra instruction transformation (#3402)
This PR implements a transformation that replaces
a linear algebra instruction with its mathematical definition.
2020-06-16 11:20:51 +01:00
dan sinclair
52a5f074e9
Update access control lists. (#3433)
This CL updates the access control lists used in SPIRV-Tools to the more
descriptive allow/deny naming.
2020-06-15 13:20:40 -04:00
Vasyl Teliman
30bf46dbe0
Fix operand access (#3427)
Fixes #3426.
2020-06-13 00:03:25 +01:00
Jaebaek Seo
5543d5faa9
Debug info preservation in ccp pass (#3420)
* Debug info preservation in ccp pass

For constant propagation, the ccp pass already replaces the result id of
a value with a result id of the corresponding constant value. As a part
of the replacement, it correctly updates the operands of
DebugValue/DebugDeclare as well. Since we do not have to any addition
work other than the ccp pass itself, this commit just adds unit tests to
check the debug information preservation.
2020-06-12 10:54:06 -04:00
David Neto
458140aed9
Fix round trip tests that weren't instantiated (#3417)
Need to actually instantiate them with TEST_P in the same source file.

Remove the instantiation of RoundTripTest from unit.cpp because
it's viewed as having no instantiations.
2020-06-10 11:11:46 -04:00
Vasyl Teliman
e498967098
spirv-fuzz: Add a test (#3238)
Add a test for issue #3237
2020-06-10 14:13:40 +01:00
Vasyl Teliman
c01f826bc6
spirv-fuzz: Add support for OpSpecConstant* (#3373)
Fixes #3371.
2020-06-10 01:01:15 +01:00
Vasyl Teliman
7c213720bb
spirv-fuzz: Fix replayer bug (#3401)
Fixes #3395.
2020-06-05 14:34:39 +01:00
André Perez
9ed0fef6e1
Add value instruction condition (#3385)
This change fixes an assertion failure related to the push
id through variable transformation. In the fuzzer pass class
it was missing the IdIsAvailableBeforeInstruction condition
that is checked in the IsApplicable function.
2020-06-05 12:30:51 +01:00
André Perez
ffaecad326
Fix instruction function use (#3390)
This change replaces the instruction function GetSingleWordOperand
with GetSingleWordInOperand. Debugging spirv-fuzz, GetSingleWordOperand
was returning the result id of an OpLoad instruction with memory operands.
2020-06-05 12:29:23 +01:00
Vasyl Teliman
94808bd0f0
spirv-fuzz: Fix regression (#3396)
Fixes #3392.
2020-06-05 12:28:07 +01:00
Paul Thomson
74130f2d3a
Fix googletest inclusion (#3398)
The googletest root CMakeLists.txt now sets a GOOGLETEST_VERSION variable, which is needed by the subprojects. Use add_subdirectory(external/googletest EXCLUDE_FROM_ALL) to add the root CMakeLists.txt file, which by default builds GMock. We already use EXCLUDE_FROM_ALL, which should shield us from e.g. building their tests, etc. If this causes issues in the future, we can change the googletest CMakeLists.txt file to only mess with compiler settings etc. if it is the root build.
2020-06-04 09:15:33 -04:00
Jaebaek Seo
636f449e15
Add tests for merge-return debug info preservation (#3389)
* Add tests for merge-return debug info preservation

* No instruct btw merge and terminator
2020-06-02 10:32:03 -04:00
André Perez
f050cca7ec
spirv-fuzz: Add push id through variable transformation (#3359)
Makes an id synonym by storing an id to a new variable and then
loading it back from that variable.

Fixes #3192.
2020-05-29 16:43:38 +01:00
Ryan Harrison
8dfdbeff84
Rolling 4 dependencies (#3380)
Roll external/effcee/ cd25ec17e..5af957bbf (3 commits)

cd25ec17e9...5af957bbfc

$ git log cd25ec17e..5af957bbf --date=short --no-merges --format='%ad %ae %s'
2019-12-20 raj.khem Respect CMAKE_INSTALL_LIBDIR in installed CMake files
2019-10-30 dneto Travis-CI: macOS: Run brew update first
2019-10-30 dneto Add namespace to make_unique to avoid potential collisions

Roll external/googletest/ f2fb48c3b..011959aaf (233 commits)

f2fb48c3b3...011959aafd

$ git log f2fb48c3b..011959aaf --date=short --no-merges --format='%ad %ae %s'
2020-05-13 absl-team Googletest export
2020-05-13 absl-team Googletest export
2020-05-11 absl-team Googletest export
2020-05-08 martin Remove an explicit include of debugapi.h
2020-05-08 martin Revert "Googletest export"
2020-05-07 absl-team Googletest export
2020-05-04 absl-team Googletest export
2020-04-30 absl-team Googletest export
2020-04-28 absl-team Googletest export
2020-04-27 absl-team Googletest export
2020-04-24 absl-team Googletest export
2020-04-23 absl-team Googletest export
2020-04-20 absl-team Googletest export
2020-04-20 absl-team Googletest export
2020-04-17 absl-team Googletest export
2020-05-01 56075233+keshavgbpecdelhi Removed a typo in README.md
2020-03-28 arthur.j.odwyer Add -Wdeprecated to the build configuration.
2020-04-16 arthur.j.odwyer Fix a -Wdeprecated warning.
2020-04-16 arthur.j.odwyer Fix a -Wdeprecated warning.
2020-04-16 arthur.j.odwyer Fix a -Wdeprecated warning.
2020-04-16 arthur.j.odwyer Remove all uses of GTEST_DISALLOW_{MOVE_,}ASSIGN_.
2020-04-19 igor.n.nazarenko Enable protobuf printing for open-source proto messages.
2020-04-16 arthur.j.odwyer VariadicMatcher needs a non-defaulted move constructor for compile-time performance.
2020-04-10 absl-team Googletest export
2020-04-12 jbohl fix signed/unsigned comparison issue (on OpenBSD)
2020-04-09 malcolm.parsons Remove redundant .c_str()
2020-04-06 mail gtest-unittest-api_test - fix warning in clang build
2020-04-01 absl-team Googletest export
2020-04-05 jijyunneng Remove duplicate codes existed in get-nprocessors.sh
2020-03-30 absl-team Googletest export
2020-03-29 verdoialaurent Fix --gtest_print_time coloring
2020-03-28 arthur.j.odwyer Replace the last instance of `throw()` with `noexcept`. NFC.
2020-03-28 arthur.j.odwyer Fix a typo in .travis.yml
2020-03-23 absl-team Googletest export
2020-03-24 krystian.kuzniarek remove chapters on Autotools, Meson and plain Makefiles
2020-03-24 krystian.kuzniarek remove dead code in googletest-output-test
2020-03-24 pkryger Swap settimer and sigaction calls to avoid SIGPROF
2020-03-21 ngompa13 Ensure that gtest/gmock pkgconfig requirements specify version
2020-03-20 absl-team Googletest export
2020-03-18 calum.robinson Add GTEST_BRIEF option
2019-07-11 adam.f.badura Add support for std::function in MockFunction (#2277)
2019-12-26 adam.f.badura Add tests for MockFunction deduction (#2277)
2020-03-17 absl-team Googletest export
2020-03-16 dmauro Googletest export
2020-03-13 absl-team Googletest export
2020-03-06 absl-team Googletest export
2020-03-03 absl-team Googletest export
2020-03-03 absl-team Googletest export
2020-03-11 romain.geissler Make sure IsATTY does not clobber errno.
2020-02-27 absl-team Googletest export
(...)
2019-10-16 absl-team Googletest export
2019-10-11 joshdcannon Avoid recursive macros
2019-10-09 robert Add more override keywords
2019-10-07 chrisjohnsonmail Update to distinguish prelease purpose of this fork.
2019-10-11 joshdcannon Removing extraneous parenthesis
2019-10-11 joshdcannon Evaluate and cat NARG in different macros
2019-08-29 chrisjohnsonmail Add ESP8266 configs to PlatformIO build
2019-08-28 chrisjohnsonmail feat: Add support for ESP8266 platform
2019-10-11 joshdcannon Removing extraneous test
2019-10-11 joshdcannon Replace compile-test with preprocessor test
2019-10-11 joshdcannon Fix preprocessor tests
2019-10-11 joshdcannon Add a compile test
2019-10-11 joshdcannon Workaround MSVC VA_ARGS weirdness
2019-10-11 misterg Googletest export
2019-10-10 absl-team Googletest export
2019-10-10 absl-team Googletest export
2019-10-11 krystian.kuzniarek clean-up broken paths for PlatformIO
2019-10-10 chrisjohnsonmail chore:  update version
2019-10-10 joshdcannon Made noexcept condition more exciting
2019-10-09 absl-team Googletest export
2019-10-09 zeb Mention Cornichon as a related open source project
2019-10-07 joshdcannon Use declval in noexcept expression
2019-10-07 joshdcannon Switch to free function to avoid GCC bug
2019-10-07 joshdcannon Avoid comma operator
2019-10-07 joshdcannon Fix spacing
2019-10-07 joshdcannon Use the verbatim noexcept spec in MOCKED_METHOD
2019-10-07 joshdcannon Use FormatFileLocation for streaming file and line
2019-10-05 soap Add documentation for pkg-config in cross-compilation settings
2019-10-05 soap Revert "Use pcfiledir for prefix in pkgconfig file"
2019-10-03 misterg Googletest export
2019-10-03 absl-team Googletest export
2019-10-02 absl-team Googletest export
2019-09-29 misterg Googletest export
2019-10-01 ant35rookie Fix typo in documents
2019-09-29 misterg Googletest export
2019-09-27 misterg Googletest export
2019-09-25 absl-team Googletest export
2019-09-25 absl-team Googletest export
2019-09-24 absl-team Googletest export
2019-09-19 absl-team Googletest export
2019-09-27 gennadiycivil Bump llvm version to 4 so brew can work again
2019-08-16 pbarker Add many missing override keywords
2019-09-05 krystian.kuzniarek remove GTEST_ARRAY_SIZE_
2019-08-22 krystian.kuzniarek mention the existing support for wide strings in string matchers
2019-09-16 krystian.kuzniarek square away the stuff that hasn't been merged in a manual review
2019-09-07 krystian.kuzniarek square away the stuff that hasn't been merged in a manual review
2019-08-22 krystian.kuzniarek change usings
2019-09-10 krystian.kuzniarek change includes in gtest-port.h
2019-09-10 krystian.kuzniarek remove GTEST_HAS_STD_STRING
2019-09-10 krystian.kuzniarek remove a dead function

Roll external/re2/ 5bd613749..aecba1111 (88 commits)

5bd613749f...aecba11114

$ git log 5bd613749..aecba1111 --date=short --no-merges --format='%ad %ae %s'
2020-05-27 junyer Refuse to rewrite when MaxSubmatch() is too large.
2020-05-22 junyer Use CMAKE_CXX_STANDARD now that we can.
2020-05-22 junyer Make "front and back" prefix accel work with MSVC.
2020-05-22 junyer Rename to Regexp::RequiredPrefixForAccel().
2020-05-22 junyer Add a basic test for prefix accel.
2020-05-20 junyer Implement "front and back" prefix accel.
2020-05-19 junyer Generalise from "first byte" to "prefix accel".
2020-05-19 junyer have_first_byte now implies run_forward.
2020-05-19 junyer Tidy up the code around the memchr(3) calls.
2020-05-17 junyer Remove a pointer chase from Regexp::Walker<>.
2020-05-17 junyer Tidy up the code for NFA threads a bit more.
2020-05-17 junyer Argh. I overlooked the constructor and destructor.
2020-05-17 junyer Undo use of PODArray<> for NFA threads.
2020-05-17 junyer Use PODArray<> in a few more places.
2020-05-16 junyer Separate build/install for libre2.a and libre2.so.
2020-05-16 junyer Refine a preprocessor check for MSVC.
2020-05-15 junyer Compute first byte for forward Progs only.
2020-05-11 junyer Don't dereference params->start unconditionally.
2020-05-11 junyer Compute first_byte using the Regexp, not the Prog.
2020-05-11 junyer Implement Regexp::RequiredPrefixUnanchored().
2020-05-11 junyer Refactor Regexp::RequiredPrefix().
2020-05-10 junyer Lower the memory budget in TestCompile.InsufficientMemory.
2020-05-05 junyer Remove first_byte from StartInfo and simplify accordingly.
2020-05-02 junyer `^' is a caret, not a carat.
2020-04-23 junyer Compute first_byte_ eagerly.
2020-04-23 junyer Remove unused flags_ member from Prog class.
2020-04-23 junyer Replace some uses of "LL" and "ULL" suffixes.
2020-04-21 junyer Explain the need for double backslashes.
2020-04-20 junyer Remove memrchr() and the logic that calls it.
2020-04-19 junyer Use 64-bit integers for the BitState bitmap.
2020-04-09 junyer Remove deprecated APIs. Bump SONAME accordingly.
2020-04-06 junyer Go back to using __builtin_ctzll(). Sigh.
2020-04-05 junyer Return the fanout histogram in a vector, not a map.
2020-04-05 junyer Optimise fanout bucketing.
2020-04-05 junyer Add Clang 10 to the Travis CI matrix.
2020-03-27 junyer Aiieee. Add a missing underscore.
2020-03-27 junyer Include the pattern length in "DFA out of memory" errors.
2020-03-15 junyer Update Unicode data to 13.0.0.
2020-03-12 junyer SRWLOCK requires Windows Vista or Windows Server 2008 at minimum.
2020-03-04 donatas.saulys Using slim RW lock on windows
2020-03-02 junyer Set SONAME to 6.
2020-03-01 junyer Bump SONAME to reflect the ABI break.
2020-02-28 junyer Add macOS and Xcode jobs to the Travis CI matrix.
2020-02-26 junyer Don't break the RE2 object when compiling the reverse Prog fails.
2020-02-26 junyer Revert "Refuse to rewrite when MaxSubmatch() is too large."
2020-02-25 junyer Fall back to NFA execution when compiling the reverse Prog failed.
2020-02-25 junyer Refuse to rewrite when MaxSubmatch() is too large.
2020-02-20 junyer Tweak the comment on RE2::QuoteMeta().
2020-02-17 junyer Move DeBruijnString() alongside StringGenerator.
2020-02-14 junyer Fix the check for Apple platforms. Mea culpa.
2020-02-14 junyer Provide hooks::context iff thread_local is supported.
2020-02-14 junyer Update doc/syntax.html.
2020-02-13 junyer MSVC also doesn't like casting lambdas with `+'. Sigh.
2020-02-13 junyer Only the latest MSVC allows designated initalisers.
2020-02-13 junyer Provide instrumentation points called "hooks".
2020-02-11 junyer Tidy up some GCC-only guards.
2020-02-04 junyer Tidy up the SWIG guard around LazyRE2.
2020-02-03 junyer Tweak some of the comments about FilteredRE2.
2020-01-31 junyer Avoid using the forward DFA in "ANCHOR_END" cases.
2020-01-29 junyer Make the fuzzer use FuzzedDataProvider.
2020-01-12 junyer Tidy up a test.
2020-01-07 junyer Prevent ShortVisit() from crashing fuzzers.
2020-01-05 junyer Fix a comment.
2019-12-29 junyer Make DFA use hints.
2019-12-13 junyer std::is_pod<> was deprecated in C++20.
2019-12-09 junyer Simplify the bytecode for the 80-10FFFF rune range.
2019-11-25 junyer Fix nullptr-with-nonzero-offset bugs found by UBSan.
2019-11-25 junyer Check if empty() instead of comparing size() with 0.
2019-11-10 junyer Fix a latent bug in Regexp::Walker<T>::Reset().
2019-10-29 junyer Tweak some printed debugging for style.
2019-10-29 junyer Address the MSVC warnings that crept in recently.
2019-10-29 junyer Simplify parse_double_float() in util/pcre.cc.
2019-10-13 junyer Fix the regexp_benchmark build with GNU make.
2019-10-11 junyer Oops, wrap a couple of lines.
2019-10-11 junyer Read flags using the GetFlag() style.
2019-10-11 junyer Make flags use the DEFINE_FLAG() style.
2019-10-11 junyer Remove a condition from exhaustive1_test.cc that is no longer needed.
2019-10-11 junyer Move util/flags.h into the testing target.
2019-10-11 junyer Don't declare testing::TempDir() in dump.cc itself.
2019-10-11 junyer Split out the fake testing::MallocCounter into its own file.
2019-10-11 junyer Remove the fake test_tmpdir flag in favour of testing::TempDir().
2019-10-10 junyer Remove the comment on NumCPUs().
2019-10-10 junyer Call .range(0) explicitly rather than just .range().
2019-10-10 junyer Move NumCPUs() into regexp_benchmark.cc.
2019-10-10 junyer Migrate to the new benchmark API.
2019-10-10 junyer Implement the new benchmark API as a layer over the old benchmark API.
2019-10-09 junyer Tidy up the ersatz benchmark library.
2019-10-07 junyer Move pod_array.h and sparse_{array,set}.h from util/ to re2/.

Roll external/spirv-headers/ f8bf11a02..ac638f181 (7 commits)

f8bf11a025...ac638f1815

$ git log f8bf11a02..ac638f181 --date=short --no-merges --format='%ad %ae %s'
2020-05-20 dneto Update example to use unified1 headers
2020-04-24 cepheus Update headers to SPIR-V 1.5 Revision 3
2020-04-24 cepheus Add a bunch of missing "version" : "None" for ray tracing.
2020-04-24 cepheus Rebuild the headers with the fixed grammar file.
2020-04-24 cepheus Add missing "version" : "None" for ShaderCallKHR
2020-04-24 cepheus Grammar: The ray-tracing updates were not done in numerical ordering.
2020-04-13 cepheus Discuss generator magic number reservations.

Created with:
  roll-dep external/effcee external/googletest external/re2 external/spirv-headers
2020-05-27 15:57:28 -04:00
Steven Perron
20e7fc5051 Start SPIRV-Tools v2020.4 2020-05-27 13:45:36 -04:00
Steven Perron
e128ab0d62 Finalize SPIRV-Tools v2020.3 2020-05-27 13:43:54 -04:00
Steven Perron
9b8a6a144f Update CHANGES 2020-05-27 10:30:52 -04:00
André Perez
d3d89bb90c
spirv-fuzz: Support bit width argument for int and float types (#3378)
This change add support to pass bit width of integer and float types
as argument when creating floating-point and integer types and
constants.
2020-05-26 15:59:11 +01:00
André Perez
55af3902fc
Fix function use (#3372)
This PR fixes a function use of a Instruction object.
2020-05-26 12:28:02 +01:00
Jaebaek Seo
9cb2571a18
spirv-val: allow DebugInfoNone for DebugTypeComposite.Size (#3374) 2020-05-25 10:02:39 -04:00
Ricardo Garcia
4386ef4234
Add validation support for ImageGatherBiasLodAMD (#3363)
ImageGatherBiasLodAMD makes it possible to use the Bias and Lod image
operands with OpImageGather and OpImageSparseGather. This commit makes
sure the validator checks for that capability before reporting errors
and adds a few positive tests.
2020-05-25 09:41:34 -04:00
Anastasia Stulova
b0264b87ff
Fix validation failure on OpDecorationGroup (#3365) 2020-05-21 13:15:41 -04:00
greg-lunarg
4410272bdd
Remove deprecated interfaces from instrument passes (#3361) 2020-05-21 13:10:42 -04:00
Jaebaek Seo
50b1557886
Preserve debug info in inline pass (#3349)
Handles the OpenCL100Debug extension in inlining.  It preserves the information that is available while also adding the debug inlined at for all of the inlining that it does.
2020-05-21 13:09:43 -04:00
Diego Novillo
4dbe18b0c8
Reject folding comparisons with unfoldable types. (#3370)
Reject folding comparisons with unfoldable types.

Fixes #3343 

When CCP is evaluating an instruction, it was trying to fold a
comparison with 64 bit integers.  This was causing a fold failure later
since the folder still cannot deal with 64 bit integers.
2020-05-21 12:58:08 -04:00
Paul Thomson
55193b06e5
Improve build instructions for fuzzer (#3364) 2020-05-21 12:56:26 +01:00
Steven Perron
3c47dac282
Add unrolling to performance passes (#3082)
Unroll loops that are marked as unroll when doing -O.  Add cleanup
optimizations after unrolling.

Fixes #3067
2020-05-20 15:43:13 -04:00
Jaebaek Seo
2b987c49a4
Handle OpConstantNull in ssa-rewrite (#3362)
ssa-rewrite fails in `MemPass::GetPtr()` when the SPIR-V code contains
`OpLoad` for the result id of `OpConstantNull` because of the out of
index access for an operand to get the base address. This commit fixes
it.

Fixes #3344
2020-05-20 12:00:51 -04:00
Ryan Harrison
95df4c9643
Add in a bunch of missed files to the BUILD.gn (#3360)
Fixes #3357
2020-05-19 15:17:58 -04:00
Ryan Harrison
90930cb311
Remove stale entries from BUILD.gn (#3358)
Fixes #3357
2020-05-19 13:25:45 -04:00
Vladimir Davidovich
18ba3d9a35
allow cross compiling for Windows Store, UWP, etc. (#3330)
for more info see https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-for-windows-store
2020-05-19 11:43:35 -04:00
Vasyl Teliman
2f69ea849a
spirv-fuzz: Remove FuzzerPassAddUsefulConstructs (#3341)
Fixes #3318.
2020-05-19 15:54:55 +01:00
Vasyl Teliman
522561619a
Add support for StorageBuffer (#3348)
Fixes #3347.
2020-05-19 15:54:05 +01:00
Gustavo Alvarez
b75dbf82a6
Prevent Effcee install his things when build spirv-tools with testing enabled (#3256) 2020-05-19 10:29:31 -04:00
Steven Perron
85c7e7956b
Don't register edges twice in merge return (#3350)
Fixes #3267
2020-05-19 10:28:04 -04:00
Steven Perron
bd0a2da946
Revert "Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)" (#3345)
This reverts commit d4fac3451b.
2020-05-14 10:55:47 -04:00
Alastair Donaldson
3118276370
spirv-reduce: Remove unused struct members (#3329)
Adds a reduction pass to remove unused members from structs.
2020-05-14 15:36:38 +01:00
André Perez
a6b0e132ec
Add adjust branch weights transformation (#3336)
In this PR, the classes that represent the adjust branch weights
transformation and fuzzer pass were implemented. This transformation
adjusts the branch weights of a OpBranchConditional instruction.
2020-05-14 11:38:34 +01:00
Steven Perron
d4fac3451b
Revert "[spirv-opt] refactor inlining pass (#3328)" (#3342)
This reverts commit 233246bc9c.
2020-05-13 23:44:19 -04:00