[ARM GlobalISel] Legalize G_SITOFP and G_UITOFP

Legal if we have hardware support, libcall otherwise.

Also add supporting code to the legalizer helper for libcalls.

llvm-svn: 323730
diff --git a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
index 4082d4e..2d09bca 100644
--- a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
@@ -192,6 +192,12 @@
       for (auto Ty : {s32, s64})
         setAction({Op, 1, Ty}, Legal);
     }
+
+    for (unsigned Op : {G_SITOFP, G_UITOFP}) {
+      setAction({Op, 1, s32}, Legal);
+      for (auto Ty : {s32, s64})
+        setAction({Op, Ty}, Legal);
+    }
   } else {
     for (unsigned BinOp : {G_FADD, G_FSUB, G_FMUL, G_FDIV})
       for (auto Ty : {s32, s64})
@@ -218,6 +224,11 @@
       setAction({Op, 1, s64}, Libcall);
     }
 
+    for (unsigned Op : {G_SITOFP, G_UITOFP}) {
+      for (auto Ty : {s32, s64})
+        setAction({Op, Ty}, Libcall);
+    }
+
     if (AEABI(ST))
       setFCmpLibcallsAEABI();
     else