Added missing ImmArg and SourceOfDivergence to the crosslane
intrinsics
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
Needs tests in test/Analysis/DivergenceAnalysis, and test/Verifier/AMDGPU/intrinsic-immarg.ll
lib/Target/AMDGPU/AMDGPUSearchableTables.td | ||
---|---|---|
102–104 ↗ | (On Diff #204305) | I'm not 100% sure on DPP. If it's called with uniform arguments, even though you read from another lane, every lane should read the same value? Is this not the case with some of the source types? |
lib/Target/AMDGPU/AMDGPUSearchableTables.td | ||
---|---|---|
102–104 ↗ | (On Diff #204305) | I think it is divergent even if all arguments are uniform. Another lane may have been updated when exec mask was different. Our DA considers values uniform only across active lanes. I.e. if you have and if..then a value inside a block will deem uniform even if it may be different in the else block. |
lib/Target/AMDGPU/AMDGPUSearchableTables.td | ||
---|---|---|
102–104 ↗ | (On Diff #204305) | This is also likely a reason for RADV failure with Alexander's divergence driven ISel. There was a lot of dpp code there and most of the code around was scalarized. |