diff options
author | Lucie Choi <ychoi0407@gmail.com> | 2025-10-11 12:13:50 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-10-11 15:13:50 -0400 |
commit | 56c604961eba3e4a7168b2cbe2ee2b7ceca0c502 (patch) | |
tree | 14138918259d134ebf13e04c32298f1a95e814d9 /llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp | |
parent | c37c82de1acbec165d39d725fe1c7e1d96710219 (diff) | |
download | llvm-56c604961eba3e4a7168b2cbe2ee2b7ceca0c502.zip llvm-56c604961eba3e4a7168b2cbe2ee2b7ceca0c502.tar.gz llvm-56c604961eba3e4a7168b2cbe2ee2b7ceca0c502.tar.bz2 |
[SPIR-V] Support `nonuniformindex` intrsinsic in SPIRV CodeGen. (#162540)
Support `@llvm.spv.resource.nonuniformindex` in SPIRV Codegen.
- Add `NonUniformEXT` decoration to the registers marked as
`nonuniformindex`, and recursively decorate its child registers (e.g.
Copy, AccessChain, Load) that access such index.
- `OpCapability ShaderNonUniformEXT` is already added in the code.
-
[SPV_EXT_descriptor_indexing](https://github.khronos.org/SPIRV-Registry/extensions/EXT/SPV_EXT_descriptor_indexing.html)
is skipped because it's added to SPIRV Core in 1.5.
## Unit test
- The unit test checks that the register being used in the final
Store/Load/Write instruction is decorated, as required by the spec.
- The implementation follows [DXC](https://godbolt.org/z/zhqGThcaf) in
that it recursively decorates all the child elements until the end.
```hlsl
RWStructuredBuffer<uint4> StructuredOut[64];
RWBuffer<uint> UnStructuredOut[64];
[numthreads(64,1,1)]
void main(uint3 GTID: SV_GroupThreadID) {
StructuredOut[(NonUniformResourceIndex(GTID.x + 1))][98][0] = 99;
UnStructuredOut[(NonUniformResourceIndex(GTID.x))][96] = 95;
}
```
Resolves https://github.com/llvm/llvm-project/issues/160231,
https://github.com/llvm/llvm-project/issues/161852.
Verified
[offload-test-suite](https://github.com/llvm/offload-test-suite/blob/cfc37840c8ad0d9c08ee900ecbc0b02cc56478ae/test/Feature/ResourceArrays/unbounded-array-nuri.test)
started passing for clang.
Diffstat (limited to 'llvm/tools/llvm-dwarfdump/llvm-dwarfdump.cpp')
0 files changed, 0 insertions, 0 deletions