This is an archive of the discontinued LLVM Phabricator instance.

[ARM] Enable GEP offset splitting for 32-bit ARM.
ClosedPublic

Authored by efriedma on Aug 29 2018, 3:42 PM.

Details

Summary

It has essentially the same benefit it has on 64-bit ARM: it substantially reduces the number of constants used by large GEP operations. Seems to be generally helpful across a few different codebases I've tried.

It is a bit heuristic driven, though, so I'm not sure it's universally beneficial; maybe could use more testing.

Diff Detail

Repository
rL LLVM

Event Timeline

efriedma created this revision.Aug 29 2018, 3:42 PM
dmgreen accepted this revision.Aug 30 2018, 9:29 AM

Yeah, I agree. Looks like it really helps out thumb1 code, and the code in CGP looks generic enough, not aarch64 specific.

LGTM

test/Transforms/CodeGenPrepare/ARM/large-offset-gep.ll
19 ↗(On Diff #163203)

Any particular reason not to test both stores?

This revision is now accepted and ready to land.Aug 30 2018, 9:29 AM
This revision was automatically updated to reflect the committed changes.