Changes in directory llvm/include/llvm/Target:
TargetLowering.h updated: 1.97 -> 1.98 --- Log message: Store default libgcc routine names and allow them to be redefined by target. --- Diffs of the changes: (+108 -1) TargetLowering.h | 109 ++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 108 insertions(+), 1 deletion(-) Index: llvm/include/llvm/Target/TargetLowering.h diff -u llvm/include/llvm/Target/TargetLowering.h:1.97 llvm/include/llvm/Target/TargetLowering.h:1.98 --- llvm/include/llvm/Target/TargetLowering.h:1.97 Thu Jan 11 12:21:28 2007 +++ llvm/include/llvm/Target/TargetLowering.h Thu Jan 11 20:10:46 2007 @@ -38,6 +38,93 @@ class MachineBasicBlock; class MachineInstr; +namespace RTLIB { + /// RTLIB::Libcall enum - This enum defines all of the runtime library calls + /// the backend can emit. + /// + enum Libcall { + // Integer + SHL_I32, + SHL_I64, + SRL_I32, + SRL_I64, + SRA_I32, + SRA_I64, + MUL_I32, + MUL_I64, + SDIV_I32, + SDIV_I64, + UDIV_I32, + UDIV_I64, + SREM_I32, + SREM_I64, + UREM_I32, + UREM_I64, + NEG_I32, + NEG_I64, + + // FLOATING POINT + ADD_F32, + ADD_F64, + SUB_F32, + SUB_F64, + MUL_F32, + MUL_F64, + DIV_F32, + DIV_F64, + REM_F32, + REM_F64, + NEG_F32, + NEG_F64, + POWI_F32, + POWI_F64, + SQRT_F32, + SQRT_F64, + SIN_F32, + SIN_F64, + COS_F32, + COS_F64, + + // CONVERSION + FPEXT_F32_F64, + FPROUND_F64_F32, + FPTOSINT_F32_I32, + FPTOSINT_F32_I64, + FPTOSINT_F64_I32, + FPTOSINT_F64_I64, + FPTOUINT_F32_I32, + FPTOUINT_F32_I64, + FPTOUINT_F64_I32, + FPTOUINT_F64_I64, + SINTTOFP_I32_F32, + SINTTOFP_I32_F64, + SINTTOFP_I64_F32, + SINTTOFP_I64_F64, + UINTTOFP_I32_F32, + UINTTOFP_I32_F64, + UINTTOFP_I64_F32, + UINTTOFP_I64_F64, + + // COMPARISON + OEQ_F32, + OEQ_F64, + UNE_F32, + UNE_F64, + OGE_F32, + OGE_F64, + OLT_F32, + OLT_F64, + OLE_F32, + OLE_F64, + OGT_F32, + OGT_F64, + UO_F32, + UO_F64, + + UNKNOWN_LIBCALL + }; + } + //===----------------------------------------------------------------------===// /// TargetLowering - This class defines information used to lower LLVM code to /// legal SelectionDAG operators that the target instruction selector can accept @@ -857,6 +944,22 @@ std::vector<SDNode*>* Created) const; + //===--------------------------------------------------------------------===// + // Runtime Library hooks + // + + /// setLibcallName - Rename the default libcall routine name for the specified + /// libcall. + void setLibcallName(RTLIB::Libcall Call, std::string Name) { + LibcallRoutineNames[Call] = Name; + } + + /// getLibcallName - Get the libcall routine name for the specified libcall. + /// + const char *getLibcallName(RTLIB::Libcall Call) const { + return LibcallRoutineNames[Call].c_str(); + } + protected: /// addLegalAddressScale - Add a integer (> 1) value which can be used as /// scale in the target addressing mode. Note: the ordering matters so the @@ -989,7 +1092,11 @@ /// Targets add entries to this map with AddPromotedToType(..), clients access /// this with getTypeToPromoteTo(..). std::map<std::pair<unsigned, MVT::ValueType>, MVT::ValueType> PromoteToType; - + + /// LibcallRoutineNames - Stores the name each libcall. + /// + std::string LibcallRoutineNames[RTLIB::UNKNOWN_LIBCALL]; + protected: /// When lowering %llvm.memset this field specifies the maximum number of /// store operations that may be substituted for the call to memset. Targets _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits