[llvm-dev] KNL Vectorization with larger vector width
Friedman, Eli via llvm-dev
llvm-dev at lists.llvm.org
Tue Jul 24 10:54:23 PDT 2018
There currently isn't any implementation of epilog loop vectorization
(see https://reviews.llvm.org/D30247, but it never got merged).
In some cases you might get lucky with loop unrolling plus SLP
vectorization.
-Eli
On 7/24/2018 10:34 AM, hameeza ahmed wrote:
> Hello,
> I need help here. I am able to adjust the vector width through
> WidestRegister value. When number of iterations=31 and I set vector
> width=32 it gives <16xi32> and <8xi32> instructions.
>
> However if i replicate same behavior with number of iterations=63 and
> I set vector width=64, no vector instructions are emitted. it should
> do as previous and gives <32xi32> and <16xi32> vector instructions.
>
> How to do this?
> What adjustments are needed?
>
> Please help
>
> I m trying this but unable to solve.
>
> Thank You
>
> On Tue, Jul 24, 2018 at 4:44 PM, hameeza ahmed <hahmed2305 at gmail.com
> <mailto:hahmed2305 at gmail.com>> wrote:
>
> Hello,
> Do i need to change following function;
>
> unsigned X86TTIImpl::getNumberOfRegisters(bool Vector) {
> if (Vector && !ST->hasSSE1())
> return 0;
>
> if (ST->is64Bit()) {
> if (Vector && ST->hasAVX512())
> return 32;
> return 16;
> }
> return 8;
> }
>
> to
>
> if (ST->is2048Bit()) {
> if (Vector && ST->hasAVX512())
> return 1024;
> return 512;
> }
> return 256;
>
>
> please help...
>
> On Tue, Jul 24, 2018 at 5:05 AM, hameeza ahmed
> <hahmed2305 at gmail.com <mailto:hahmed2305 at gmail.com>> wrote:
>
> Thank You.
> Right now to see the effect i did following changes;
>
> unsigned X86TTIImpl::getRegisterBitWidth(bool Vector) {
> if (Vector) {
> if (ST->hasAVX512())
> return 65536;
>
> here i changed 512 to 65536. Then in loopvectorize.cpp i did
> following;
>
> assert(MaxVectorSize <= 2048 && "Did not expect to pack so
> many elements"
> " into one vector!");
>
> changed 64 to 2048.
>
> It runs fine. I can see in IR <2048xi32> or <1024xi64> emission.
>
> But I cannot see the vector mix like in default knl if
> iterations=15 we see 1<8xi32> and rest scalar. so here when i
> keep iteration=2047 i get all scalar why is that so? similarly
> in polly as well i cant see vector mixes like its happening
> for KNL it emits <v16i32>, <v8i32>,<v4i32>...so here it should
> emit recursively like <v2048i32> <v1024i32> <v512i32>.....<v32i32>
>
> how to do this?
>
> What am i missing here?
> what further changes do i need to make?
>
> Please help...
>
>
>
>
>
>
> On Tue, Jul 24, 2018 at 1:52 AM, Friedman, Eli
> <efriedma at codeaurora.org <mailto:efriedma at codeaurora.org>> wrote:
>
> On 7/23/2018 12:40 PM, hameeza ahmed wrote:
>
> Thank You. I got it. Version issue.
>
> TTI.getRegisterBitWidth(true)
>
> How to put my target machine info in TTI?
>
>
> Each target has an implementation, e.g.
> X86TTIImpl::getRegisterBitWidth.
>
>
> -Eli
>
> --
> Employee of Qualcomm Innovation Center, Inc.
> Qualcomm Innovation Center, Inc. is a member of Code
> Aurora Forum, a Linux Foundation Collaborative Project
>
>
>
>
> --
> You received this message because you are subscribed to the Google
> Groups "Polly Development" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to polly-dev+unsubscribe at googlegroups.com
> <mailto:polly-dev+unsubscribe at googlegroups.com>.
> For more options, visit https://groups.google.com/d/optout.
--
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20180724/d8964fde/attachment-0001.html>
More information about the llvm-dev
mailing list