[PATCH] D19984: [LV] Handle RAW dependences in interleaved access analysis

Matthew Simpson via llvm-commits llvm-commits at lists.llvm.org
Thu May 12 07:00:43 PDT 2016


mssimpso added a comment.

Hi Adam,

> Why are non-zero forward deps rejected by LAA?  Because of the HW store-to-load forwarding case?  I think that that is only a performance consideration and it's only on conditionally.


Siviu was referring to a comment I had made in the source. But I think the idea was that LAA had already ensured the absence of the dependences that would have prevented vectorization. So the interleaved access analysis didn't need to worry about them. Regarding the store-to-load forwarding case, yes, that is the assumption the original analysis made, which was incorrect. The current patch attempts to fix that.

> I think that we should probably take the time and review the soundness of these code motions with respect to interleaved access vectorization {RAW, WAR, WAW} x {loop-independent, loop-carried}.  I've only looked at the LAA aspects of this feature so far but I am a bit worried about this code now.

> 

> Matt, do you think you can do this?


I'm happy to give the analysis a very careful second look. I'll do that today and report back.

> I am also thinking if we should disable this feature in the meantime?!


We should definitely disable interleaved access vectorization if we can't correct the bug (PR27626) before release time. Doing so would have performance implications for ARM/AArch64, so I'm hoping we can fix it before then. I wouldn't be strongly opposed to disabling it in the meantime. But to my knowledge, the bug isn't currently blocking anyone, and it's been around since the original implementation. Silviu and I only discovered it in passing, and it wasn't something we encountered in the wild. What do you think?


http://reviews.llvm.org/D19984





More information about the llvm-commits mailing list