Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
LGTM
include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
481 ↗ | (On Diff #78119) | And that region of LDS is constant anyway, so IntrNoMem is fine. |
include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
481 ↗ | (On Diff #78119) | Is that possible? I thought the runtime couldn't ever initialize LDS, so something in the shader has to set it in the first place |
include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
481 ↗ | (On Diff #78119) | The LDS for these instructions is initialized by Primitive Assembly (or possibly the Scan Converter, it's unclear to me where the boundary between those hardware blocks is precisely). |
include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
481 ↗ | (On Diff #78119) | LDS is initialized by the SPI block before the pixel shader. ReadNone is fine, because nothing can modify it. |
include/llvm/IR/IntrinsicsAMDGPU.td | ||
---|---|---|
481 ↗ | (On Diff #78119) | I think you'd have to modify m0 to before writing to it, which can't be done from LLVM IR. Anyway, the same could be said about any other memory. We want v_interp to be 100% movable without restrictions. We want the same for the vast majority of loads and also most stores, because stores with side effects are very rare in graphics, and are usually limited to LDS in compute shaders. I've seen plenty of buffer and image stores used by games, but I've yet to see those with any side effects. |