aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2016-08-25 17:37:32 +0000
committerTim Northover <tnorthover@apple.com>2016-08-25 17:37:32 +0000
commit438c77ca1adf6ea29d25f5c53336dacff5ac5a21 (patch)
tree57bf2922a37cd74ee96e67eb31b9081ff3a7fe61 /llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
parent2c4a838e241fa078b24811d81bfe87513d40d903 (diff)
downloadllvm-438c77ca1adf6ea29d25f5c53336dacff5ac5a21.zip
llvm-438c77ca1adf6ea29d25f5c53336dacff5ac5a21.tar.gz
llvm-438c77ca1adf6ea29d25f5c53336dacff5ac5a21.tar.bz2
GlobalISel: perform multi-step legalization
llvm-svn: 279758
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp')
-rw-r--r--llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
index f6bdbfb..e6012aa 100644
--- a/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
+++ b/llvm/lib/Target/AArch64/AArch64MachineLegalizer.cpp
@@ -48,6 +48,10 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() {
for (auto Ty : {s32, s64})
setAction({BinOp, Ty}, Legal);
+ for (auto Op : { G_UADDE, G_USUBE, G_SADDO, G_SSUBO, G_SMULO, G_UMULO })
+ for (auto Ty : { s32, s64 })
+ setAction({Op, Ty}, Legal);
+
for (auto BinOp : {G_FADD, G_FSUB, G_FMUL, G_FDIV})
for (auto Ty : {s32, s64})
setAction({BinOp, Ty}, Legal);
@@ -99,6 +103,20 @@ AArch64MachineLegalizer::AArch64MachineLegalizer() {
setAction({G_ANYEXT, 1, Ty}, Legal);
}
+ // Truncations
+ for (auto Ty : { s16, s32 })
+ setAction({G_FPTRUNC, Ty}, Legal);
+
+ for (auto Ty : { s32, s64 })
+ setAction({G_FPTRUNC, 1, Ty}, Legal);
+
+ for (auto Ty : { s1, s8, s16, s32 })
+ setAction({G_TRUNC, Ty}, Legal);
+
+ for (auto Ty : { s8, s16, s32, s64 })
+ setAction({G_TRUNC, 1, Ty}, Legal);
+
+
// Control-flow
setAction({G_BR, LLT::unsized()}, Legal);
setAction({G_BRCOND, s32}, Legal);