[ARM] GlobalISel: Allow i8 and i16 adds
Teach the instruction selector and legalizer that it's ok to have adds with 8 or
16-bit integers.
This is the second part of https://reviews.llvm.org/D27704
llvm-svn: 290105
diff --git a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
index 6680196..255ea4b 100644
--- a/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
+++ b/llvm/lib/Target/ARM/ARMLegalizerInfo.cpp
@@ -25,7 +25,11 @@
ARMLegalizerInfo::ARMLegalizerInfo() {
using namespace TargetOpcode;
+
const LLT p0 = LLT::pointer(0, 32);
+
+ const LLT s8 = LLT::scalar(8);
+ const LLT s16 = LLT::scalar(16);
const LLT s32 = LLT::scalar(32);
setAction({G_FRAME_INDEX, p0}, Legal);
@@ -33,7 +37,8 @@
setAction({G_LOAD, s32}, Legal);
setAction({G_LOAD, 1, p0}, Legal);
- setAction({G_ADD, s32}, Legal);
+ for (auto Ty : {s8, s16, s32})
+ setAction({G_ADD, Ty}, Legal);
computeTables();
}