HomePhabricator

[ARM] Implement TTI::isHardwareLoopProfitable

Description

[ARM] Implement TTI::isHardwareLoopProfitable

Implement the backend target hook to drive the HardwareLoops pass.
The low-overhead branch extension for Arm M-class cores is flexible
enough that we don't have to ensure correctness at this point, except
checking that the loop counter variable can be stored in LR - a
32-bit register. For it to be profitable, we want to avoid loops that
contain function calls, or any other instruction that alters the PC.

This implementation uses TargetLoweringInfo, to query type and
operation actions, looks at intrinsic calls and also performs some
manual checks for remainder/division and FP operations.

I think this should be a good base to start and extra details can be
filled out later.

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

Details

Committed
sam_parkerJun 12 2019, 5:00 AM
Differential Revision
D62907: [ARM] Implement TTI::isHardwareLoopProfitable
Parents
rL363148: [bindings/go][NFC] Format code with go fmt
Branches
Unknown
Tags
Unknown