[ARM] GlobalISel: Support frem for 32-bit values
Legalize to a libcall.
On this occasion, also start allowing soft float subtargets. For the
moment G_FREM is the only legal floating point operation for them.
llvm-svn: 299753
diff --git a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
index cc30547..64cca82 100644
--- a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
@@ -57,7 +57,7 @@
setAction({G_CONSTANT, s32}, Legal);
- if (ST.hasVFP2()) {
+ if (!ST.useSoftFloat() && ST.hasVFP2()) {
setAction({G_FADD, s32}, Legal);
setAction({G_FADD, s64}, Legal);
@@ -65,5 +65,7 @@
setAction({G_STORE, s64}, Legal);
}
+ setAction({G_FREM, s32}, Libcall);
+
computeTables();
}