[PATCH] D64862: AMDGPU/GlobalISel: RegBankSelect interp intrinsics
Nicolai Hähnle via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 22 04:14:58 PDT 2019
nhaehnle added inline comments.
================
Comment at: lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp:1332
+ // Waterfall loop for m0 value, which is always the last operand.
+ executeInWaterfallLoop(MI, MRI, { MI.getNumOperands() - 1 });
+ return;
----------------
arsenm wrote:
> nhaehnle wrote:
> > We don't waterfall these in the non-GlobalISel path as far as I can tell? Should just use readfirstlane if necessary.
> I think this is more of a defect in SelectionDAG because handling this correctly is hard. I’m considering adding a pseudo UniformVGPR register bank for cases where readfirstlane is OK
The fact that a readfirstlane is generated instead of a waterfall loop is not a defect in SelectionDAG, at least not in general.
Frontend languages have builtins whose behavior is undefined when certain arguments are dynamically non-uniform. That is, programmers can use them in a context where the compiler cannot possibly prove that the value will be uniform, but the programmer implicitly guarantees that it will be at runtime. Emitting a readfirstlane for those when necessary is the correct behavior.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D64862/new/
https://reviews.llvm.org/D64862
More information about the llvm-commits
mailing list