mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-02 08:46:23 +00:00
allow the offset of a preinc'd load to be the low-part of a global. This
produces this clever code: _millisecs: lis r2, ha16(_Time.1182) lwzu r3, lo16(_Time.1182)(r2) lwz r2, 4(r2) addic r4, r2, 1 addze r3, r3 blr instead of this: _millisecs: lis r2, ha16(_Time.1182) la r3, lo16(_Time.1182)(r2) lwz r2, lo16(_Time.1182)(r2) lwz r3, 4(r3) addic r4, r3, 1 addze r3, r2 blr for: long %millisecs() { %tmp = load long* %Time.1182 ; <long> [#uses=1] %tmp1 = add long %tmp, 1 ; <long> [#uses=1] ret long %tmp1 } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31673 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d181c0120c
commit
5b3bbc7cd7
@ -856,7 +856,8 @@ SDNode *PPCDAGToDAGISel::Select(SDOperand Op) {
|
||||
}
|
||||
|
||||
SDOperand Offset = LD->getOffset();
|
||||
if (isa<ConstantSDNode>(Offset)) {
|
||||
if (isa<ConstantSDNode>(Offset) ||
|
||||
Offset.getOpcode() == ISD::TargetGlobalAddress) {
|
||||
SDOperand Chain = LD->getChain();
|
||||
SDOperand Base = LD->getBasePtr();
|
||||
AddToISelQueue(Chain);
|
||||
|
Loading…
Reference in New Issue
Block a user