[llvm] r195455 - [mips][msa] Fix corner case for integer constant splats with undef values.
sabre at nondot.org
Mon Nov 25 08:47:26 PST 2013
Yes, I approve. We really should have a code owner for the MIPS backend. Any suggestions?
> On Nov 25, 2013, at 8:06 AM, Daniel Sanders <Daniel.Sanders at imgtec.com> wrote:
> Hi Chris,
> There doesn't seem to be an owner for the MIPS backend in CODE_OWNERS.txt. Can you approve merging this commit (and the two corrections r195456, r195469 to fix a typo and missing testcase) to the release_34 branch?
> Just to give you the context, it's part of the following series of patches:
> * r195343 - [mips][msa/dsp] Only do DSP combines if DSP is enabled.
> * r195364 - [mips][msa] Fix a corner case in performORCombine() when combining nodes into VSELECT.
> * r195444 - [mips][msa] Float vector constants cannot use ldi.[wd] directly. Bitcast from the appropriate integer vector type.
> * r195455, r195456, and r195469 - [mips][msa] Fix corner case for integer constant splats with undef values.
> Once these four patches are committed, an llvm-stress + llc loop can run for over 15 hours without llc crashing (up from a previous best of ~20 seconds).
>> -----Original Message-----
>> From: Daniel Sanders
>> Sent: 22 November 2013 15:53
>> To: Daniel Sanders; llvm-commits at cs.uiuc.edu
>> Subject: RE: [llvm] r195455 - [mips][msa] Fix corner case for integer constant
>> splats with undef values.
>> It seems I forgot to commit the test case in this commit. Committed it in
>>> -----Original Message-----
>>> From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-
>>> bounces at cs.uiuc.edu] On Behalf Of Daniel Sanders
>>> Sent: 22 November 2013 13:14
>>> To: llvm-commits at cs.uiuc.edu
>>> Subject: [llvm] r195455 - [mips][msa] Fix corner case for integer
>>> constant splats with undef values.
>>> Author: dsanders
>>> Date: Fri Nov 22 07:14:06 2013
>>> New Revision: 195455
>>> URL: http://llvm.org/viewvc/llvm-project?rev=195455&view=rev
>>> [mips][msa] Fix corner case for integer constant splats with undef values.
>>> lowerBUILD_VECTOR() was treating integer constant splats as being
>>> legal regardless of whether they had undef values. This caused
>>> instruction selection failures when the undefs were legalized to zero,
>>> making the constant non-splat.
>>> Fixed this by requiring HasAnyUndef to be false for a integer constant
>>> splat to be legal. If it is true, a new node is generated with the
>>> undefs replaced with the necessary values to remain a splat.
>>> Modified: llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp
>>> URL: http://llvm.org/viewvc/llvm-
>>> --- llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp (original)
>>> +++ llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp Fri Nov 22
>>> +++ 07:14:06 2013
>>> @@ -2211,8 +2211,9 @@ SDValue MipsSETargetLowering::lowerBUILD
>>> // If the value fits into a simm10 then we can use ldi.[bhwd]
>>> // However, if it isn't an integer type we will have to bitcast from an
>>> - // integer type first.
>>> - if (ResTy.isInteger() && SplatValue.isSignedIntN(10))
>>> + // integer type first. Also, it there are any undefs, we must lower them
>>> + // to defined values first.
>>> + if (ResTy.isInteger() && !HasAnyUndefs &&
>>> + SplatValue.isSignedIntN(10))
>>> return Op;
>>> EVT ViaVecTy;
>>> llvm-commits mailing list
>>> llvm-commits at cs.uiuc.edu
More information about the llvm-commits