This is an archive of the discontinued LLVM Phabricator instance.

[InterleaveAccess] Copy fast math flags when adjusting binary operators in interleave access pass
ClosedPublic

Authored by dmgreen on Jun 14 2021, 12:04 PM.

Details

Summary

The Interleave Access pass will convert shuffle(binop(load, load)) to binop(shuffle(load), shuffle(load)), in order to create more interleaving load patterns (VLD2/3/4) that might have been messed up by instcombine. As shown in D104247 we were missing copying IR flags to the new instruction though, which should just be kept the same as the original instruction.

Diff Detail

Event Timeline

dmgreen created this revision.Jun 14 2021, 12:04 PM
dmgreen requested review of this revision.Jun 14 2021, 12:04 PM
Herald added a project: Restricted Project. · View Herald TranscriptJun 14 2021, 12:04 PM
jsji accepted this revision.Jun 14 2021, 12:39 PM

LGTM

This revision is now accepted and ready to land.Jun 14 2021, 12:39 PM
jsji added inline comments.Jun 14 2021, 12:44 PM
llvm/lib/CodeGen/InterleavedAccessPass.cpp
411–412

No sure, but maybe we can use CreateWithCopiedFlags directly?

dmgreen updated this revision to Diff 352056.Jun 15 2021, 1:07 AM
dmgreen added inline comments.Jun 15 2021, 1:08 AM
llvm/lib/CodeGen/InterleavedAccessPass.cpp
411–412

Oh yeah, that's what I was looking for! I had to add an version with an InsertBefore point, too.

This revision was landed with ongoing or failed builds.Jun 17 2021, 1:53 AM
This revision was automatically updated to reflect the committed changes.