Implement transformation to record synonymous constants.#3494
Conversation
…f constant definition is necessary), write tests for IsApplicable method.
…ass and write corresponding tests.
…and add skeleton files for its implementation.
…structor and ToMessage method of TransformationRecordSynonymousConstants class.
…nts class and implement first tests for it.
…d integrate tests to check its functionality.
afd
left a comment
There was a problem hiding this comment.
Looking good! Some changes requested.
|
@stefanomil The CI has failed due to formatting. Please search for "Code should be formatted with |
When the pass replaces the local variable `OpVariable` ids to their corresponding pointers, we have to update operands of DebugValue or DebugDeclare instructions.
…ronosGroup#3489) This PR implements the OpVectorTimesMatrix case for the replace linear algebra instruction transformation.
74c6127 to
0270bc9
Compare
|
I have applied the suggested changes. In the test file, since the transformation is applied many times, I wrote a function to apply the transformation and check the results. Let me know if that is ok or if there are any downsides in terms of readability or other. |
afd
left a comment
There was a problem hiding this comment.
I'm happy to approve but I'm not sure that your change to the copyright header will pass the format checks (nor that it follows the conventions of the project).
|
@Vasniktel please see the transformation added here. We will need to adapt this so that - when we have IdIsIrrelevant facts - we do not allow facts that make constants synonymous where either one is irrelevant. |
|
Thanks, I'll take a look. |
…p#3494) Adds a fact-only transformation that records that two constants in the module are synonymous.
Roll third_party/effcee/ 5af957bbf..2ec8f8738 (3 commits) google/effcee@5af957b...2ec8f87 $ git log 5af957bbf..2ec8f8738 --date=short --no-merges --format='%ad %ae %s' 2020-06-16 dneto Start v2020.0-dev 2020-06-16 dneto Finalize v2019.1 2020-06-15 dneto Update CHANGES Created with: roll-dep third_party/effcee Roll third_party/glslang/ e8c9fd6..b481744 (19 commits) KhronosGroup/glslang@e8c9fd6...b481744 $ git log e8c9fd6..b481744 --date=short --no-merges --format='%ad %ae %s' 2020-07-14 bclayton Give build_info.py the executable bit 2020-07-14 cepheus Fix recently found non-determinism with gl_WorldToObject3x4EXT. 2020-07-14 cepheus Non-determinism: Remove test file that seems to trigger non-determinism. 2020-07-13 bclayton Add bison license to LICENSE.txt 2020-07-13 bclayton CMake: Move project() to top of CMakeLists.txt 2020-07-13 bclayton Kokoro: Print test output to stdout 2020-07-13 cepheus Fix comma in licence checker. 2020-07-13 cepheus Revert "Merge pull request KhronosGroup#2330 from ShabbyX/optimize_for_angle" 2020-07-13 cepheus Fix a couple lines that were too long, to retrigger bots. 2020-07-13 cepheus Fix KhronosGroup#2329: don't use invalid initializers. 2020-07-12 bclayton Add missing comma from license-checker.cfg 2020-07-12 ccom Common: include standard headers before doing any defines 2020-07-10 bclayton Fix CMake rules when nesting CMake projects 2020-07-10 bclayton Attempt to fix chromium builds 2020-06-17 bclayton Generate build information from CHANGES.md 2020-07-03 ShabbyX Customize glslang.y to GLSLANG_ANGLE 2020-07-03 ShabbyX Use GLSLANG_ANGLE to strip features to what ANGLE requires 2020-07-07 rharrison Make sure glslang_angle has a definition in BUILD.gn 2020-07-07 bclayton Use CMake's builtin functionality for PCHs Created with: roll-dep third_party/glslang Roll third_party/googletest/ 356f2d264..70b90929b (7 commits) google/googletest@356f2d2...70b9092 $ git log 356f2d264..70b90929b --date=short --no-merges --format='%ad %ae %s' 2020-07-09 absl-team Googletest export 2020-07-07 ofats Googletest export 2020-07-07 absl-team Googletest export 2020-07-07 absl-team Googletest export 2020-04-11 olivier.ldff use target_compile_features to use c++11 if cmake > 3.8 2020-05-30 eli fix compilation on OpenBSD 6.7 2020-01-22 mjvk Fixes extensions missing for QNX Created with: roll-dep third_party/googletest Roll third_party/spirv-cross/ 559b21c6c..6575e451f (2 commits) KhronosGroup/SPIRV-Cross@559b21c...6575e45 $ git log 559b21c6c..6575e451f --date=short --no-merges --format='%ad %ae %s' 2020-07-11 post MSVC 2013: Fix silently broken builds. 2020-07-07 troughton MSL: Ensure OpStore source operands are marked for inclusion in function arguments Created with: roll-dep third_party/spirv-cross Roll third_party/spirv-tools/ 6a4da9d..c9b254d (17 commits) KhronosGroup/SPIRV-Tools@6a4da9d...c9b254d $ git log 6a4da9d..c9b254d --date=short --no-merges --format='%ad %ae %s' 2020-07-14 andreperezmaselco.developer spirv-fuzz: Support adding dead break from back-edge block (KhronosGroup#3519) 2020-07-14 andreperezmaselco.developer Support OpPhi when replacing boolean constant operand (KhronosGroup#3518) 2020-07-12 vasniktel spirv-fuzz: TransformationAddSynonyms (KhronosGroup#3447) 2020-07-11 vasniktel spirv-fuzz: Remove unused functions (KhronosGroup#3510) 2020-07-11 vasniktel spirv-fuzz: Minor refactoring (KhronosGroup#3507) 2020-07-10 greg Preserve OpenCL.DebugInfo.100 through elim-local-single-store (KhronosGroup#3498) 2020-07-10 jaebaek Preserve debug info in vector DCE pass (KhronosGroup#3497) 2020-07-10 stefano.milizia00 Implement transformation to record synonymous constants. (KhronosGroup#3494) 2020-07-09 jaebaek Fix build failure (KhronosGroup#3508) 2020-07-09 greg Upgrade elim-local-single-block for OpenCL.DebugInfo.100 (KhronosGroup#3451) 2020-07-09 vasniktel spirv-fuzz: TransformationReplaceParameterWithGlobal (KhronosGroup#3434) 2020-07-09 andreperezmaselco.developer Implement the OpMatrixTimesVector linear algebra case (KhronosGroup#3500) 2020-07-08 jaebaek Preserve OpenCL.100.DebugInfo in reduce-load-size pass (KhronosGroup#3492) 2020-07-08 andreperezmaselco.developer spirv-fuzz: Add image sample unused components transformation (KhronosGroup#3439) 2020-07-07 andreperezmaselco.developer spirv-fuzz: Add variables with workgroup storage class (KhronosGroup#3485) 2020-07-07 andreperezmaselco.developer spirv-fuzz: Implement the OpVectorTimesMatrix linear algebra case (KhronosGroup#3489) 2020-07-07 vasniktel spirv-fuzz: fuzzerutil::MaybeGetConstant* KhronosGroup#3487 Created with: roll-dep third_party/spirv-tools
#3132
This pull request only includes the code related to TransformationRecordSynonymousConstants and related tests (after feedback for #3486 , with changes based on the feedback from code review).