diff options
author | Igor Breger <igor.breger@intel.com> | 2017-03-26 08:11:12 +0000 |
---|---|---|
committer | Igor Breger <igor.breger@intel.com> | 2017-03-26 08:11:12 +0000 |
commit | 531a203a0617ddabc7ab5bd4342b1697dd9625be (patch) | |
tree | cec10f8fd45352473c2ee4e683949fff5383b8c8 /llvm/lib/Target/X86/X86LegalizerInfo.cpp | |
parent | fa7367428ae39271e5a2f2554f7c607d9b07a5c8 (diff) | |
download | bcm5719-llvm-531a203a0617ddabc7ab5bd4342b1697dd9625be.tar.gz bcm5719-llvm-531a203a0617ddabc7ab5bd4342b1697dd9625be.zip |
[GlobalISel][X86] support G_FRAME_INDEX instruction selection.
Summary:
Support G_FRAME_INDEX instruction selection.
Reviewers: zvi, rovka, ab, qcolombet
Reviewed By: ab
Subscribers: llvm-commits, dberris, kristof.beyls, eladcohen, guyblank
Differential Revision: https://reviews.llvm.org/D30980
llvm-svn: 298800
Diffstat (limited to 'llvm/lib/Target/X86/X86LegalizerInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86LegalizerInfo.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp index bda657946f7..3ab80c4f20c 100644 --- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp +++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp @@ -13,6 +13,7 @@ #include "X86LegalizerInfo.h" #include "X86Subtarget.h" +#include "X86TargetMachine.h" #include "llvm/CodeGen/ValueTypes.h" #include "llvm/IR/DerivedTypes.h" #include "llvm/IR/Type.h" @@ -25,7 +26,9 @@ using namespace TargetOpcode; #error "You shouldn't build this" #endif -X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI) : Subtarget(STI) { +X86LegalizerInfo::X86LegalizerInfo(const X86Subtarget &STI, + const X86TargetMachine &TM) + : Subtarget(STI), TM(TM) { setLegalizerInfo32bit(); setLegalizerInfo64bit(); @@ -56,6 +59,9 @@ void X86LegalizerInfo::setLegalizerInfo32bit() { // And everything's fine in addrspace 0. setAction({MemOp, 1, p0}, Legal); } + + // Pointer-handling + setAction({G_FRAME_INDEX, p0}, Legal); } void X86LegalizerInfo::setLegalizerInfo64bit() { @@ -63,7 +69,7 @@ void X86LegalizerInfo::setLegalizerInfo64bit() { if (!Subtarget.is64Bit()) return; - const LLT p0 = LLT::pointer(0, 64); + const LLT p0 = LLT::pointer(0, TM.getPointerSize() * 8); const LLT s8 = LLT::scalar(8); const LLT s16 = LLT::scalar(16); const LLT s32 = LLT::scalar(32); @@ -80,6 +86,9 @@ void X86LegalizerInfo::setLegalizerInfo64bit() { // And everything's fine in addrspace 0. setAction({MemOp, 1, p0}, Legal); } + + // Pointer-handling + setAction({G_FRAME_INDEX, p0}, Legal); } void X86LegalizerInfo::setLegalizerInfoSSE1() { |