diff options
author | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2018-02-28 12:11:53 +0000 |
---|---|---|
committer | Alexander Ivchenko <alexander.ivchenko@intel.com> | 2018-02-28 12:11:53 +0000 |
commit | c01f750480fc918f58fa25a789eda0e1eaea5117 (patch) | |
tree | 309c243dcc7636f2bce89cc5600ee7670ee89493 /llvm/lib/Target/X86/X86LegalizerInfo.cpp | |
parent | 256869d8bcf6ee6a5c44a18cb1074b89c7dd5a13 (diff) | |
download | bcm5719-llvm-c01f750480fc918f58fa25a789eda0e1eaea5117.tar.gz bcm5719-llvm-c01f750480fc918f58fa25a789eda0e1eaea5117.zip |
[GlobalIsel][X86] Support G_INTTOPTR instruction.
Add legalization/selection for x86/x86_64 and
corresponding tests.
Reviewed By: igorb
Differential Revision: https://reviews.llvm.org/D43622
llvm-svn: 326320
Diffstat (limited to 'llvm/lib/Target/X86/X86LegalizerInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86LegalizerInfo.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp index 050e5ef8b29..bcf0ffb1bdf 100644 --- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp +++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp @@ -124,11 +124,13 @@ void X86LegalizerInfo::setLegalizerInfo32bit() { setAction({G_GEP, p0}, Legal); setAction({G_GEP, 1, s32}, Legal); - if (!Subtarget.is64Bit()) + if (!Subtarget.is64Bit()) { getActionDefinitionsBuilder(G_PTRTOINT) .legalForCartesianProduct({s1, s8, s16, s32}, {p0}) .maxScalar(0, s32) .widenScalarToNextPow2(0, /*Min*/ 8); + getActionDefinitionsBuilder(G_INTTOPTR).legalFor({s32, p0}); + } // Control-flow setAction({G_BRCOND, s1}, Legal); @@ -194,6 +196,7 @@ void X86LegalizerInfo::setLegalizerInfo64bit() { .legalForCartesianProduct({s1, s8, s16, s32, s64}, {p0}) .maxScalar(0, s64) .widenScalarToNextPow2(0, /*Min*/ 8); + getActionDefinitionsBuilder(G_INTTOPTR).legalFor({s64, p0}); // Constants setAction({TargetOpcode::G_CONSTANT, s64}, Legal); |