[SPIR-V] Fix pushconstants offset calculation for 32 bit values #7620
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I found a cool bug from #7572: It only works when pushconstants are one or more 64 bit values. #7572 didn't change the codegen but load offset needs to be adjusted for 32 bit values (since all pushconstants occupy 64 bit after #7572). In particular, dynamic shape workload requires passing the shape size as 32 bit pushconstants, so currently VK/SPIR-V backend is completely broken for dynamic shape.
I updated load offset calculation and now dynamic shape started working with VK/SPIR-V. Dynamic shape sort, which involves mixed 32 and 64 bit pushconstants, is also working using a patch from #7607. But one test I added, dynamic cumsum, is still not working for some reason.
cc @tqchen @vinx13 I'm not sure if Metal backend has this problem.