This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Adjust isLegalT1AddressImmediate for non-legal types
ClosedPublic

Authored by dmgreen on Jun 6 2019, 10:16 AM.

Details

Summary

Types such as float and i64's do not have legal loads in Thumb1, but will still be loaded with a LDR (or potentially multiple LDR's). As such we can treat the cost of addressing mode calculations as such and get some optimisation benefits.

Some of the tests are new, I'm just showing the differences for clarity.

Diff Detail

Repository
rL LLVM

Event Timeline

dmgreen created this revision.Jun 6 2019, 10:16 AM
efriedma accepted this revision.Jun 6 2019, 10:42 AM

This probably doesn't precisely match the generated code for all simple types, but it makes sense for at least i64/float/double. LGTM

This revision is now accepted and ready to land.Jun 6 2019, 10:42 AM
This revision was automatically updated to reflect the committed changes.