[llvm] r195455 - [mips][msa] Fix corner case for integer constant splats with undef values.

Chris Lattner 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?

-Chris

> 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
>> r195469.
>> 
>>> -----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
>>> Log:
>>> [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
>>> 
>>> Modified: llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp
>>> URL: http://llvm.org/viewvc/llvm-
>> project/llvm/trunk/lib/Target/Mips/MipsSEISelLowering.cpp?rev=195455&r
>>> 1
>>> =195454&r2=195455&view=diff
>> ==========================================================
>>> ====================
>>> --- 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
>>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list