HomePhabricator

[ARM] Code size optimisation to lower udiv+urem to udiv+mls instead of a

Description

[ARM] Code size optimisation to lower udiv+urem to udiv+mls instead of a
library call to __aeabi_uidivmod. This is an improved implementation of
r280808, see also D24133, that got reverted because isel was stuck in a loop.
That was caused by the optimisation incorrectly triggering on i64 ints, which
shouldn't happen because there is no 64bit hwdiv support; that put isel's type
legalization and this optimisation in a loop. A native ARM compiler and testing
now shows that this is fixed.

Patch mostly by Pablo Barrio.

Differential Revision: https://reviews.llvm.org/D25077

Details

Committed
SjoerdMeijerOct 3 2016, 3:12 AM
Differential Revision
D25077: [ARM] Lower UDIV+UREM to UDIV+MLS (and the same for SREM)
Parents
rL283097: [ELF] - Do not crash on invalid section alignment.
Branches
Unknown
Tags
Unknown