summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDiana Picus <diana.picus@linaro.org>2017-02-16 09:09:49 +0000
committerDiana Picus <diana.picus@linaro.org>2017-02-16 09:09:49 +0000
commit21c3d8e0fc2d413daefbbb71c3fe13659e612b37 (patch)
tree7e97e88bc7190ba419155195183d425fa2f8ac8b /llvm/lib
parentf813697f0595d15d605dad0360b6aec4c4a58dd4 (diff)
downloadbcm5719-llvm-21c3d8e0fc2d413daefbbb71c3fe13659e612b37.tar.gz
bcm5719-llvm-21c3d8e0fc2d413daefbbb71c3fe13659e612b37.zip
[ARM] GlobalISel: Legalize 64-bit G_FADD and G_LOAD
For now we just mark them as legal all the time and let the other passes bail out if they can't handle it. In the future, we'll want to move more of the brains into the legalizer. llvm-svn: 295300
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMLegalizerInfo.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
index af44cbf50f0..a4f93b433f6 100644
--- a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
@@ -32,6 +32,7 @@ ARMLegalizerInfo::ARMLegalizerInfo() {
const LLT s8 = LLT::scalar(8);
const LLT s16 = LLT::scalar(16);
const LLT s32 = LLT::scalar(32);
+ const LLT s64 = LLT::scalar(64);
setAction({G_FRAME_INDEX, p0}, Legal);
@@ -39,6 +40,11 @@ ARMLegalizerInfo::ARMLegalizerInfo() {
setAction({G_LOAD, Ty}, Legal);
setAction({G_LOAD, 1, p0}, Legal);
+ // FIXME: This is strictly for loading double-precision floating point values,
+ // if the hardware allows it. We rely on the instruction selector to complain
+ // otherwise.
+ setAction({G_LOAD, s64}, Legal);
+
for (auto Ty : {s1, s8, s16, s32})
setAction({G_ADD, Ty}, Legal);
@@ -51,6 +57,7 @@ ARMLegalizerInfo::ARMLegalizerInfo() {
// FIXME: This is a bit sloppy, but for now we'll just rely on the instruction
// selector to complain if it doesn't support floating point.
setAction({G_FADD, s32}, Legal);
+ setAction({G_FADD, s64}, Legal);
computeTables();
}
OpenPOWER on IntegriCloud