summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2016-08-26 17:45:58 +0000
committerTim Northover <tnorthover@apple.com>2016-08-26 17:45:58 +0000
commit5d0eaa4e79d1e409ce019602a709a275b08d5217 (patch)
treece00739d08ebeb1e6b5ce5e3bcc135c9db719377 /llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
parenta67e4d32544dc26393a54619b5fe2b63f581773e (diff)
downloadbcm5719-llvm-5d0eaa4e79d1e409ce019602a709a275b08d5217.tar.gz
bcm5719-llvm-5d0eaa4e79d1e409ce019602a709a275b08d5217.zip
GlobalISel: mark float/int conversions legal
llvm-svn: 279839
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp')
-rw-r--r--llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
index d8f72a9fc8e..98935d1f5a2 100644
--- a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
+++ b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
@@ -120,6 +120,20 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() {
for (auto Ty : { s8, s16, s32, s64 })
setAction({G_TRUNC, 1, Ty}, Legal);
+ // Conversions
+ for (auto Ty : { s1, s8, s16, s32, s64 }) {
+ setAction({G_FPTOSI, 0, Ty}, Legal);
+ setAction({G_FPTOUI, 0, Ty}, Legal);
+ setAction({G_SITOFP, 1, Ty}, Legal);
+ setAction({G_UITOFP, 1, Ty}, Legal);
+ }
+
+ for (auto Ty : { s32, s64 }) {
+ setAction({G_FPTOSI, 1, Ty}, Legal);
+ setAction({G_FPTOUI, 1, Ty}, Legal);
+ setAction({G_SITOFP, 0, Ty}, Legal);
+ setAction({G_UITOFP, 0, Ty}, Legal);
+ }
// Control-flow
setAction({G_BR, LLT::unsized()}, Legal);
OpenPOWER on IntegriCloud