diff options
author | James Molloy <james.molloy@arm.com> | 2016-06-07 13:10:14 +0000 |
---|---|---|
committer | James Molloy <james.molloy@arm.com> | 2016-06-07 13:10:14 +0000 |
commit | b101383fb5939c2ce5df0b64ec1221483d9902b0 (patch) | |
tree | c3959ad08bcc3e1582e911a68d7d9f9517d86a5c /llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp | |
parent | 61e628591f21c6d6e8ae11f1debf9c67fdadc48a (diff) | |
download | bcm5719-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.cpp | 1 |
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 { |