summaryrefslogtreecommitdiffstats
path: root/llvm
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2005-12-17 20:59:06 +0000
committerChris Lattner <sabre@nondot.org>2005-12-17 20:59:06 +0000
commitea752cc50aae0a370deb1706463551d1ff8092a1 (patch)
treebbfcfbbc0265e57dbb880c836050a7823c2a4bf0 /llvm
parent6be83f99595016ad16af1795e6cd394771bffeed (diff)
downloadbcm5719-llvm-ea752cc50aae0a370deb1706463551d1ff8092a1.tar.gz
bcm5719-llvm-ea752cc50aae0a370deb1706463551d1ff8092a1.zip
Add support for 64-bit arguments
llvm-svn: 24792
Diffstat (limited to 'llvm')
-rw-r--r--llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp b/llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp
index a2eb9c7acb9..a17637a46ab 100644
--- a/llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp
+++ b/llvm/lib/Target/SparcV8/SparcV8ISelDAGToDAG.cpp
@@ -102,6 +102,18 @@ SparcV8TargetLowering::LowerArguments(Function &F, SelectionDAG &DAG) {
Arg = DAG.getNode(ISD::TRUNCATE, ObjectVT, Arg);
}
ArgValues.push_back(Arg);
+ break;
+ }
+ case MVT::i64: {
+ unsigned VRegLo = RegMap->createVirtualRegister(&V8::IntRegsRegClass);
+ MF.addLiveIn(GPR[ArgNo++], VRegLo);
+ unsigned VRegHi = RegMap->createVirtualRegister(&V8::IntRegsRegClass);
+ MF.addLiveIn(GPR[ArgNo++], VRegHi);
+ SDOperand ArgLo = DAG.getCopyFromReg(DAG.getRoot(), VRegLo, MVT::i32);
+ SDOperand ArgHi = DAG.getCopyFromReg(ArgLo.getValue(1), VRegHi, MVT::i32);
+ DAG.setRoot(ArgHi.getValue(1));
+ ArgValues.push_back(DAG.getNode(ISD::BUILD_PAIR, MVT::i64, ArgLo, ArgHi));
+ break;
}
}
}
OpenPOWER on IntegriCloud