diff options
author | Craig Topper <craig.topper@intel.com> | 2017-10-21 02:26:00 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@intel.com> | 2017-10-21 02:26:00 +0000 |
commit | fcf27188d7530a9931ba59e6231463c0acf0e8ba (patch) | |
tree | ff5a14d99e307a8ea2cdf43a21c3d441935ee72b /llvm/lib/Target | |
parent | fce435764e6777fc2883d54f73224bc4ae141caf (diff) | |
download | bcm5719-llvm-fcf27188d7530a9931ba59e6231463c0acf0e8ba.tar.gz bcm5719-llvm-fcf27188d7530a9931ba59e6231463c0acf0e8ba.zip |
[X86] Do not generate __multi3 for mul i128 on X86
Summary: __multi3 is not available on x86 (32-bit). Setting lib call name for MULI_128 to nullptr forces DAGTypeLegalizer::ExpandIntRes_MUL to generate instructions for 128-bit multiply instead of a call to an undefined function. This fixes PR20871 though it may be worth looking at why licm and indvars combine to generate 65-bit multiplies in that test.
Patch by Riyaz V Puthiyapurayil
Reviewers: craig.topper, schweitz
Reviewed By: craig.topper, schweitz
Subscribers: RKSimon, llvm-commits
Differential Revision: https://reviews.llvm.org/D38668
llvm-svn: 316254
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r-- | llvm/lib/Target/X86/X86ISelLowering.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp index a1f5e8b512f..a40c236d0dc 100644 --- a/llvm/lib/Target/X86/X86ISelLowering.cpp +++ b/llvm/lib/Target/X86/X86ISelLowering.cpp @@ -1585,6 +1585,7 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM, setLibcallName(RTLIB::SHL_I128, nullptr); setLibcallName(RTLIB::SRL_I128, nullptr); setLibcallName(RTLIB::SRA_I128, nullptr); + setLibcallName(RTLIB::MUL_I128, nullptr); } // Combine sin / cos into one node or libcall if possible. |