summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
diff options
context:
space:
mode:
authorJames Molloy <james.molloy@arm.com>2016-06-07 13:10:14 +0000
committerJames Molloy <james.molloy@arm.com>2016-06-07 13:10:14 +0000
commitb101383fb5939c2ce5df0b64ec1221483d9902b0 (patch)
treec3959ad08bcc3e1582e911a68d7d9f9517d86a5c /llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
parent61e628591f21c6d6e8ae11f1debf9c67fdadc48a (diff)
downloadbcm5719-llvm-b101383fb5939c2ce5df0b64ec1221483d9902b0.tar.gz
bcm5719-llvm-b101383fb5939c2ce5df0b64ec1221483d9902b0.zip
[Thumb-1] Add optimized constant materialization for integers [256..512)
We can materialize these integers using a MOV; ADDi8 pair. llvm-svn: 272007
Diffstat (limited to 'llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp')
-rw-r--r--llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
index 0aacd674d62..cc835df15b3 100644
--- a/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
+++ b/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp
@@ -485,6 +485,7 @@ unsigned ARMDAGToDAGISel::ConstantMaterializationCost(unsigned Val) const {
if (Subtarget->isThumb()) {
if (Val <= 255) return 1; // MOV
if (Subtarget->hasV6T2Ops() && Val <= 0xffff) return 1; // MOVW
+ if (Val <= 511) return 2; // MOV + ADDi8
if (~Val <= 255) return 2; // MOV + MVN
if (ARM_AM::isThumbImmShiftedVal(Val)) return 2; // MOV + LSL
} else {
OpenPOWER on IntegriCloud