[AVX512] Bring back vector-shuffle lowering support through broadcasts
Robert Khasanov
rob.khasanov at gmail.com
Wed Oct 22 04:10:56 PDT 2014
Elena,
On 256-bit versions of vector-shuffle lowering (lowerV8F32VectorShuffle,
lowerV8I32VectorShuffle etc), you can see that there is big difference
inside the functions (except broadcasts and blends). I assume Chandler
provided opportunity to implement 512-bit vector-shuffle lowering in the
same way in future.
2014-10-22 12:08 GMT+04:00 Demikhovsky, Elena <elena.demikhovsky at intel.com>:
> Why do you need so many functions:
> lowerV16F32VectorShuffle
> lowerV8I64VectorShuffle
> lowerV16I32VectorShuffle
> .. ?
>
> I don't see a big diff between them.
>
> - Elena
>
>
> -----Original Message-----
> From: Robert Khasanov [mailto:rob.khasanov at gmail.com]
> Sent: Tuesday, October 21, 2014 21:03
> To: rob.khasanov at gmail.com; chandlerc at gmail.com
> Cc: Demikhovsky, Elena; anemet at apple.com; llvm-commits at cs.uiuc.edu
> Subject: [PATCH] [AVX512] Bring back vector-shuffle lowering support
> through broadcasts
>
> Hi chandlerc,
>
> I found that after your commit at rev219046 512-bit broadcasts lowering
> become non-optimal. Most of tests on broadcasting and embedded broadcasting
> were changed and they doesn’t produce efficient code.
>
> Example below is from your commit changes (it’s the first test from
> test/CodeGen/X86/avx512-vbroadcast.ll):
>
> define <16 x i32> @_inreg16xi32(i32 %a) {
> ; CHECK-LABEL: _inreg16xi32:
> ; CHECK: ## BB#0:
> -; CHECK-NEXT: vpbroadcastd %edi, %zmm0
> +; CHECK-NEXT: vmovd %edi, %xmm0
> +; CHECK-NEXT: vpbroadcastd %xmm0, %ymm0
> +; CHECK-NEXT: vinserti64x4 $1, %ymm0, %zmm0, %zmm0
> ; CHECK-NEXT: retq
> %b = insertelement <16 x i32> undef, i32 %a, i32 0
> %c = shufflevector <16 x i32> %b, <16 x i32> undef, <16 x i32>
> zeroinitializer
> ret <16 x i32> %c
> }
>
> Here, 256-bit broadcast was generated instead of 512-bit one.
>
> I investigated the reason, found that in your version of vector-shuffle
> lowering there is no AVX-512 support.
>
> In this patch
> 1) I added vector-shuffle lowering through broadcasts
> 2) Removed asserts and branches likes because this is incorrect
> - assert(Subtarget->hasDQI() && "We can only lower v8i64 with
> AVX-512-DQI");
> 3) Fixed lowering tests
>
> http://reviews.llvm.org/D5885
>
> Files:
> lib/Target/X86/X86ISelLowering.cpp
> lib/Target/X86/X86InstrAVX512.td
> test/CodeGen/X86/avx512-arith.ll
> test/CodeGen/X86/avx512-vbroadcast.ll
> test/CodeGen/X86/avx512-vec-cmp.ll
> test/CodeGen/X86/vector-shuffle-512-v8.ll
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
>
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20141022/e93c3be8/attachment.html>
More information about the llvm-commits
mailing list