[PATCH] D90591: [ARM] Introduce t2DoLoopStartTP

Dave Green via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Nov 3 11:16:45 PST 2020


dmgreen added a comment.

Sos I missed your comment.

This code seemed simple enough to me, perhaps because I wrote essentially the same thing a few times. We are just looking through vregs for the PHI's. There may be COPY's in the way but they are simple enough to deal with. It's all just SSA form still.

The other things I would like to put here start with combining t2LoopDec and t2LoopEnd into a single instructions. A t2LoopEndDec is what I've called it. Thats a terminator that produces a value, but it seems to work OK in the testing I've been trying, given a few adjustments. I was going the "they can never spill" approach, which I've not found any problems with so long as there are no calls in the loop (or inline asm). It's obviously more accurate to determine what was made into a call as opposed to trying to guess at what will become a call from pre-isel. And if we get it wrong, the compiler would crash, so we do have to be a bit careful. It is using a lot of the same code as this, and also removing COPYs from the loop which seemed generally useful.

Unfortunately I found out the AMDGPU backend also has terminators the produce values, but they work differently. I will have to figure something out there.

I was also going to add an LR predicate to MVE instructions to make sure they would never go wrong, done in the same place hopefully. That's another one that involves updating 100's of tests unfortunately.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D90591/new/

https://reviews.llvm.org/D90591



More information about the llvm-commits mailing list