[LLVMdev] Please benchmark new x86 vector shuffle lowering, planning to make it the default very soon! (original) (raw)

Andrea Di Biagio andrea.dibiagio at gmail.com
Wed Oct 1 01:23:09 PDT 2014


On Wed, Oct 1, 2014 at 1:52 AM, Chandler Carruth <chandlerc at google.com> wrote:

This has been added in r218724. Thanks Chandler!

Based on the feedback here and from Quentin, I'm going to email the list shortly with a heads-up, and then flip the default over to the new shuffle lowering.

Nice. Again, thanks for working on this!

-Andrea

On Mon, Sep 29, 2014 at 10:48 PM, Chandler Carruth <chandlerc at google.com> wrote:

Wow. Somehow, I forgot about vbroadcast and vpbroadcast. =[ Sorry about_ _that. I'll fix those._ _On Fri, Sep 26, 2014 at 3:39 AM, Andrea Di Biagio_ _<andrea.dibiagio at gmail.com> wrote:

Hi Chandler, Here is another test. When looking at the AVX codegen, I noticed that, when using the new shuffle lowering, we no longer emit a single vbroadcastss in the case where the shuffle performs a splat of a scalar float loaded from memory. For example: (with -mcpu=corei7-avx -x86-experimental-vector-shuffle-lowering) vmovss (%rdi), %xmm0 vpermilps $0, %xmm0, %xmm0 # xmm0 = xmm0[0,0,0,0] Instead of: (with -mcpu=corei7-avx) vbroadcastss (%rdi), %xmm0 I have attached a small reproducible for it. Basically, the old shuffle lowering logic calls function 'NormalizeVectorShuffle' to handle shuffles that perform a splat operation. On AVX, function 'NormalizeVectorShuffle' tries to lower a splat where the splat value comes from a load into a X86ISD::VBROADCAST dag node. Later on, during instruction selection, we emit a single avxbroadcast for the load+splat sequence (basically, we end up folding the load in the operand of the vbroadcastss). What happens is that the new shuffle lowering doesn't emit a vbroadcast node in this case and eventually we end up selecting the sequence of vmovss+vpermilps. I hope this helps. Andrea On Tue, Sep 23, 2014 at 10:53 PM, Chandler Carruth <chandlerc at google.com> wrote: > > On Tue, Sep 23, 2014 at 2:35 PM, Simon Pilgrim <llvm-dev at redking.me.uk> > wrote: >> >> If you don’t want to spend time on this, I’d be happy to create a >> candidate patch for review? I’ve been unclear if you were taking >> patches for >> your shuffle work prior to it becoming the default. > > > While I'm happy to work on it, I'm even more happy to have patches. =D > _> ________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >



More information about the llvm-dev mailing list