[llvm] r202067 - SLPVectorizer: Try vectorizing 'splat' stores

Arnold aschwaighofer at apple.com
Tue Feb 25 07:14:26 PST 2014


Yes there were whitespace errors.

Sent from my iPhone

> On Feb 25, 2014, at 5:57 AM, Hal Finkel <hfinkel at anl.gov> wrote:
> 
> ----- Original Message -----
>> From: "Arnold Schwaighofer" <aschwaighofer at apple.com>
>> To: llvm-commits at cs.uiuc.edu
>> Sent: Monday, February 24, 2014 1:52:29 PM
>> Subject: [llvm] r202067 - SLPVectorizer: Try vectorizing 'splat' stores
>> 
>> Author: arnolds
>> Date: Mon Feb 24 13:52:29 2014
>> New Revision: 202067
>> 
>> URL: http://llvm.org/viewvc/llvm-project?rev=202067&view=rev
>> Log:
>> SLPVectorizer: Try vectorizing 'splat' stores
>> 
>> Vectorize sequential stores of a broadcasted value.
>> 5% on eon.
>> 
>> radar://16124699
>> 
>> Modified:
>>    llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp
>>    llvm/trunk/test/Transforms/SLPVectorizer/X86/tiny-tree.ll
>> 
>> Modified: llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp?rev=202067&r1=202066&r2=202067&view=diff
>> ==============================================================================
>> --- llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Vectorize/SLPVectorizer.cpp Mon Feb 24
>> 13:52:29 2014
>> @@ -1101,11 +1101,15 @@ bool BoUpSLP::isFullyVectorizableTinyTre
>>   if (VectorizableTree.size() != 2)
>>     return false;
>> 
>> +  // Handle splat stores.
>> +  if (!VectorizableTree[0].NeedToGather &&
>> isSplat(VectorizableTree[1].Scalars))
>> +    return true;
>> +
>>   // Gathering cost would be too much for tiny trees.
>> -  if (VectorizableTree[0].NeedToGather ||
>> VectorizableTree[1].NeedToGather)
>> -    return false;
>> +  if (VectorizableTree[0].NeedToGather ||
>> VectorizableTree[1].NeedToGather)
>> +    return false;
>> 
>> -  return true;
>> +  return true;
> 
> What happened here? Are these whitespace changes that I can't see in my e-mail client?
> 
> -Hal
> 
>> }
>> 
>> int BoUpSLP::getTreeCost() {
>> 
>> Modified: llvm/trunk/test/Transforms/SLPVectorizer/X86/tiny-tree.ll
>> URL:
>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SLPVectorizer/X86/tiny-tree.ll?rev=202067&r1=202066&r2=202067&view=diff
>> ==============================================================================
>> --- llvm/trunk/test/Transforms/SLPVectorizer/X86/tiny-tree.ll
>> (original)
>> +++ llvm/trunk/test/Transforms/SLPVectorizer/X86/tiny-tree.ll Mon Feb
>> 24 13:52:29 2014
>> @@ -138,3 +138,18 @@ for.body:
>> for.end:                                          ; preds =
>> %for.body, %entry
>>   ret void
>> }
>> +
>> +
>> +; CHECK-LABEL: store_splat
>> +; CHECK: store <4 x float>
>> +define void @store_splat(float*, float) {
>> +  %3 = getelementptr inbounds float* %0, i64 0
>> +  store float %1, float* %3, align 4
>> +  %4 = getelementptr inbounds float* %0, i64 1
>> +  store float %1, float* %4, align 4
>> +  %5 = getelementptr inbounds float* %0, i64 2
>> +  store float %1, float* %5, align 4
>> +  %6 = getelementptr inbounds float* %0, i64 3
>> +  store float %1, float* %6, align 4
>> +  ret void
>> +}
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> -- 
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory



More information about the llvm-commits mailing list