Skip to content

spirv-fuzz: Generalise transformation access chain#3546

Merged
afd merged 18 commits intoKhronosGroup:masterfrom
stefanomil:generalise_transformation_access_chain
Jul 27, 2020
Merged

spirv-fuzz: Generalise transformation access chain#3546
afd merged 18 commits intoKhronosGroup:masterfrom
stefanomil:generalise_transformation_access_chain

Conversation

@stefanomil
Copy link
Copy Markdown
Collaborator

@stefanomil stefanomil commented Jul 16, 2020

This PR generalises TransformationAddAccessChain so that dynamic
indices for non-struct composites (with clamping to ensure that
accesses are in-bound) are allowed.

The transformation will add instructions to clamp any index to
a non-struct composite, regardless of whether it is a constant
or not.

Fixes #3179

@stefanomil stefanomil marked this pull request as ready for review July 20, 2020 10:05
Copy link
Copy Markdown
Contributor

@paulthomson paulthomson left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks really good. I have done a first pass giving some suggestions.

@stefanomil stefanomil requested a review from paulthomson July 20, 2020 15:32
@stefanomil stefanomil force-pushed the generalise_transformation_access_chain branch from c8c24e2 to 6f940da Compare July 21, 2020 08:57
Copy link
Copy Markdown
Contributor

@afd afd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You've done a great job with this and your PR looks functionally correct and shows a deep understanding of the code base.

I've done a detailed and fairly picky review because there are some aspects of your approach that make the code hard to read in places, to me at least: use of a helper function that in my view obfuscates the code without providing benefits of re-use, and in another place sharing of code across IsApplicable and Apply in a manner that, again to me, is to the detriment of readability.

Copy link
Copy Markdown
Contributor

@afd afd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I really like what you've done here! Just a few changes and then I think we'll be good to merge.

@stefanomil stefanomil force-pushed the generalise_transformation_access_chain branch from e34dfdb to 563afd7 Compare July 24, 2020 08:35
Copy link
Copy Markdown
Contributor

@afd afd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One comment - perhaps a merge problem? Otherwise looks good.

Copy link
Copy Markdown
Contributor

@afd afd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM.

@afd afd merged commit f8920bc into KhronosGroup:master Jul 27, 2020
dnovillo pushed a commit to dnovillo/SPIRV-Tools that referenced this pull request Aug 19, 2020
This PR generalises TransformationAddAccessChain so that dynamic
indices for non-struct composites (with clamping to ensure that
accesses are in-bound) are allowed.

The transformation will add instructions to clamp any index to
a non-struct composite, regardless of whether it is a constant
or not.

Fixes KhronosGroup#3179.
dneto0 pushed a commit to dneto0/SPIRV-Tools that referenced this pull request Sep 14, 2024
* Rolling 2 dependencies and updating expectations

Roll third_party/spirv-cross/ 6575e451f..0376576d2 (5 commits)

KhronosGroup/SPIRV-Cross@6575e45...0376576

$ git log 6575e451f..0376576d2 --date=short --no-merges --format='%ad %ae %s'
2020-07-22 tommek Enabling setting a fixed sampleMask in Metal fragment shaders.
2020-02-20 cdavis MSL: Add support for processing more than one patch per workgroup.
2020-07-22 dsinclair Roll GLSLang, SPIRV-Headers and SPIRV-Tools.
2020-07-22 cdavis MSL: Factor creating a uint type into its own method.
2020-07-22 cdavis MSL: Factor a really gnarly condition into its own method.

Created with:
  roll-dep third_party/spirv-cross

Roll third_party/spirv-tools/ 969f028..b63f0e5 (13 commits)

KhronosGroup/SPIRV-Tools@969f028...b63f0e5

$ git log 969f028..b63f0e5 --date=short --no-merges --format='%ad %ae %s'
2020-07-27 rdb Fix SyntaxWarning in Python 3.8 (KhronosGroup#3388)
2020-07-27 bclayton CMake: Enable building with BUILD_SHARED_LIBS=1 (KhronosGroup#3490)
2020-07-27 dneto Avoid operand type range checks (KhronosGroup#3379)
2020-07-27 jaebaek Preserve debug info in scalar replacement pass (KhronosGroup#3461)
2020-07-27 pierremoreau Update OpenCL capabilities validation (KhronosGroup#3149)
2020-07-27 stevenperron build(deps): bump lodash from 4.17.15 to 4.17.19 in /tools/sva (KhronosGroup#3596)
2020-07-27 antonikarp spirv-fuzz: adds TransformationReplaceLoadStoreWithCopyMemory (KhronosGroup#3586)
2020-07-27 jaebaek Preserve OpenCL.DebugInfo.100 through private-to-local pass (KhronosGroup#3571)
2020-07-27 stefanomil spirv-fuzz: Relax type checking for int contants (KhronosGroup#3573)
2020-07-27 stefanomil spirv-fuzz: Generalise transformation access chain (KhronosGroup#3546)
2020-07-27 stefanomil spirv-fuzz: Split blocks starting with OpPhi before trying to outline (KhronosGroup#3581)
2020-07-27 afdx spirv-fuzz: Set message consumer in replayer when shrinking (KhronosGroup#3591)
2020-07-24 vasniktel spirv-fuzz: Don't use default parameters (KhronosGroup#3583)

Created with:
  roll-dep third_party/spirv-tools

* Add in missing expectations update
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

spirv-fuzz: Transformation to add access chain initially restricted to use literal indices

4 participants