mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-14 17:28:53 +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 } llvm-svn: 31673
This commit is contained in:
parent
3d48461071
commit
1409347c13
@ -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…
x
Reference in New Issue
Block a user