[PATCH] D62907: [ARM] Implement TTI::isHardwareLoopProfitable
Dave Green via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sat Jun 8 07:53:30 PDT 2019
dmgreen added inline comments.
================
Comment at: lib/Target/ARM/ARMTargetTransformInfo.cpp:646
+ default: break;
+ case Intrinsic::sqrt:
+ case Intrinsic::powi:
----------------
There is a floating point sqrt instruction, at least for scalar fp. MVE does not have sqrt or div, but will expand into multiple scalar instructions.
================
Comment at: lib/Target/ARM/ARMTargetTransformInfo.cpp:688
+ case Intrinsic::usub_sat:
+ return true; // FIXME Signed 32-bit could be selected to QADD/SUB.
+ }
----------------
I think most intrinsics like these will be expanded, so not end up as functions (even if they are not very efficient).
================
Comment at: lib/Target/ARM/ARMTargetTransformInfo.cpp:698
+ TTI::HardwareLoopInfo &HWLoopInfo) {
+ // FIXME: Low-overhead branches are only supported in the 'low-overhead branch'
+ // extension of v8.1-m.
----------------
This is an extension to 8.1-m? Not just a base feature?
================
Comment at: lib/Target/ARM/ARMTargetTransformInfo.cpp:704
+ // For now, for simplicity, only support loops with one exit block.
+ if (!L->getExitBlock() || !SE.getBackedgeTakenCount(L))
+ return false;
----------------
Will getBackedgeTakenCount ever be nullptr (as opposed to something like SCEVCouldNotCompute below)
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D62907/new/
https://reviews.llvm.org/D62907
More information about the llvm-commits
mailing list