aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/Target/TargetLowering.h
diff options
context:
space:
mode:
authorTim Northover <Tim.Northover@arm.com>2013-01-09 13:18:15 +0000
committerTim Northover <Tim.Northover@arm.com>2013-01-09 13:18:15 +0000
commit2c8cf4b404e549482f593f62f9e27e0bab4a8b3f (patch)
tree775d22e96f6e961c3a7f91e80a3f0f1b0b1ede9b /include/llvm/Target/TargetLowering.h
parentb1349fa3c52f328896a4182a8e7b90bce75f1e1e (diff)
downloadexternal_llvm-2c8cf4b404e549482f593f62f9e27e0bab4a8b3f.zip
external_llvm-2c8cf4b404e549482f593f62f9e27e0bab4a8b3f.tar.gz
external_llvm-2c8cf4b404e549482f593f62f9e27e0bab4a8b3f.tar.bz2
Refactor to expose RTLIB calls to targets.
fp128 is almost but not quite completely illegal as a type on AArch64. As a result it needs to have a register class (for argument passing mainly), but all operations need to be lowered to runtime calls. Currently there's no way for targets to do this (without duplicating code), as the relevant functions are hidden in SelectionDAG. This patch changes that. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@171971 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Target/TargetLowering.h')
-rw-r--r--include/llvm/Target/TargetLowering.h11
1 files changed, 11 insertions, 0 deletions
diff --git a/include/llvm/Target/TargetLowering.h b/include/llvm/Target/TargetLowering.h
index eee25c9..583cc67 100644
--- a/include/llvm/Target/TargetLowering.h
+++ b/include/llvm/Target/TargetLowering.h
@@ -1848,6 +1848,17 @@ public:
return LibcallCallingConvs[Call];
}
+ bool isInTailCallPosition(SelectionDAG &DAG, SDNode *Node,
+ SDValue &Chain) const;
+
+ void softenSetCCOperands(SelectionDAG &DAG, EVT VT,
+ SDValue &NewLHS, SDValue &NewRHS,
+ ISD::CondCode &CCCode, DebugLoc DL) const;
+
+ SDValue makeLibCall(SelectionDAG &DAG, RTLIB::Libcall LC, EVT RetVT,
+ const SDValue *Ops, unsigned NumOps,
+ bool isSigned, DebugLoc dl) const;
+
private:
const TargetMachine &TM;
const DataLayout *TD;