[llvm] RuntimeLibcalls: Remove table of soft float compare cond codes (PR #146082)

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 8 04:58:44 PDT 2025


================
@@ -601,37 +601,80 @@ RTLIB::Libcall RTLIB::getMEMSET_ELEMENT_UNORDERED_ATOMIC(uint64_t ElementSize) {
   }
 }
 
-void RTLIB::initCmpLibcallCCs(ISD::CondCode *CmpLibcallCCs) {
-  std::fill(CmpLibcallCCs, CmpLibcallCCs + RTLIB::UNKNOWN_LIBCALL,
-            ISD::SETCC_INVALID);
-  CmpLibcallCCs[RTLIB::OEQ_F32] = ISD::SETEQ;
-  CmpLibcallCCs[RTLIB::OEQ_F64] = ISD::SETEQ;
-  CmpLibcallCCs[RTLIB::OEQ_F128] = ISD::SETEQ;
-  CmpLibcallCCs[RTLIB::OEQ_PPCF128] = ISD::SETEQ;
-  CmpLibcallCCs[RTLIB::UNE_F32] = ISD::SETNE;
-  CmpLibcallCCs[RTLIB::UNE_F64] = ISD::SETNE;
-  CmpLibcallCCs[RTLIB::UNE_F128] = ISD::SETNE;
-  CmpLibcallCCs[RTLIB::UNE_PPCF128] = ISD::SETNE;
-  CmpLibcallCCs[RTLIB::OGE_F32] = ISD::SETGE;
-  CmpLibcallCCs[RTLIB::OGE_F64] = ISD::SETGE;
-  CmpLibcallCCs[RTLIB::OGE_F128] = ISD::SETGE;
-  CmpLibcallCCs[RTLIB::OGE_PPCF128] = ISD::SETGE;
-  CmpLibcallCCs[RTLIB::OLT_F32] = ISD::SETLT;
-  CmpLibcallCCs[RTLIB::OLT_F64] = ISD::SETLT;
-  CmpLibcallCCs[RTLIB::OLT_F128] = ISD::SETLT;
-  CmpLibcallCCs[RTLIB::OLT_PPCF128] = ISD::SETLT;
-  CmpLibcallCCs[RTLIB::OLE_F32] = ISD::SETLE;
-  CmpLibcallCCs[RTLIB::OLE_F64] = ISD::SETLE;
-  CmpLibcallCCs[RTLIB::OLE_F128] = ISD::SETLE;
-  CmpLibcallCCs[RTLIB::OLE_PPCF128] = ISD::SETLE;
-  CmpLibcallCCs[RTLIB::OGT_F32] = ISD::SETGT;
-  CmpLibcallCCs[RTLIB::OGT_F64] = ISD::SETGT;
-  CmpLibcallCCs[RTLIB::OGT_F128] = ISD::SETGT;
-  CmpLibcallCCs[RTLIB::OGT_PPCF128] = ISD::SETGT;
-  CmpLibcallCCs[RTLIB::UO_F32] = ISD::SETNE;
-  CmpLibcallCCs[RTLIB::UO_F64] = ISD::SETNE;
-  CmpLibcallCCs[RTLIB::UO_F128] = ISD::SETNE;
-  CmpLibcallCCs[RTLIB::UO_PPCF128] = ISD::SETNE;
+ISD::CondCode TargetLoweringBase::getSoftFloatCmpLibcallPredicate(
+    RTLIB::LibcallImpl Impl) const {
+  switch (Impl) {
+  case RTLIB::__aeabi_dcmpeq__ne:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_dcmpeq__eq:
+    return ISD::SETEQ;
+  case RTLIB::__aeabi_dcmplt:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_dcmple:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_dcmpge:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_dcmpgt:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_dcmpun:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_fcmpeq__ne:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_fcmpeq__eq:
+    return ISD::SETEQ;
+  case RTLIB::__aeabi_fcmplt:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_fcmple:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_fcmpge:
+    return ISD::SETNE;
+  case RTLIB::__aeabi_fcmpgt:
+    return ISD::SETNE;
+  default:
----------------
RKSimon wrote:

OK, maybe a comment describing this as the mapping makes very little sense by itself.

https://github.com/llvm/llvm-project/pull/146082


More information about the llvm-commits mailing list