diff options
author | Igor Breger <igor.breger@intel.com> | 2017-05-01 06:30:16 +0000 |
---|---|---|
committer | Igor Breger <igor.breger@intel.com> | 2017-05-01 06:30:16 +0000 |
commit | c08a783521fc490ffb18955b4dc48ca0c13f1db7 (patch) | |
tree | fabbcfdd76800fa5340e5db2583054d0d87004c2 /llvm/lib/Target/X86/X86LegalizerInfo.cpp | |
parent | 70a6051ddfd5f04777f2bc42503bb11bc8f1723a (diff) | |
download | bcm5719-llvm-c08a783521fc490ffb18955b4dc48ca0c13f1db7.tar.gz bcm5719-llvm-c08a783521fc490ffb18955b4dc48ca0c13f1db7.zip |
[GlobalISel][X86] G_SEXT/G_ZEXT support.
Reviewers: zvi, guyblank
Reviewed By: zvi
Subscribers: rovka, llvm-commits, kristof.beyls
Differential Revision: https://reviews.llvm.org/D32591
llvm-svn: 301790
Diffstat (limited to 'llvm/lib/Target/X86/X86LegalizerInfo.cpp')
-rw-r--r-- | llvm/lib/Target/X86/X86LegalizerInfo.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86LegalizerInfo.cpp b/llvm/lib/Target/X86/X86LegalizerInfo.cpp index c2dc762fec5..a437f6bf471 100644 --- a/llvm/lib/Target/X86/X86LegalizerInfo.cpp +++ b/llvm/lib/Target/X86/X86LegalizerInfo.cpp @@ -71,6 +71,15 @@ void X86LegalizerInfo::setLegalizerInfo32bit() { setAction({TargetOpcode::G_CONSTANT, s1}, WidenScalar); setAction({TargetOpcode::G_CONSTANT, s64}, NarrowScalar); + + // Extensions + setAction({G_ZEXT, s32}, Legal); + setAction({G_SEXT, s32}, Legal); + + for (auto Ty : {s8, s16}) { + setAction({G_ZEXT, 1, Ty}, Legal); + setAction({G_SEXT, 1, Ty}, Legal); + } } void X86LegalizerInfo::setLegalizerInfo64bit() { @@ -105,6 +114,17 @@ void X86LegalizerInfo::setLegalizerInfo64bit() { setAction({TargetOpcode::G_CONSTANT, Ty}, Legal); setAction({TargetOpcode::G_CONSTANT, s1}, WidenScalar); + + // Extensions + for (auto Ty : {s32, s64}) { + setAction({G_ZEXT, Ty}, Legal); + setAction({G_SEXT, Ty}, Legal); + } + + for (auto Ty : {s8, s16, s32}) { + setAction({G_ZEXT, 1, Ty}, Legal); + setAction({G_SEXT, 1, Ty}, Legal); + } } void X86LegalizerInfo::setLegalizerInfoSSE1() { |