[PATCH] D92645: [X86] Add X86ISD::SUBV_BROADCAST_LOAD and begin removing X86ISD::SUBV_BROADCAST (PR38969)

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 10 02:24:36 PST 2020


RKSimon added inline comments.


================
Comment at: llvm/test/CodeGen/X86/subvector-broadcast.ll:826
 ; X64-AVX512-NEXT:    vpaddq %ymm2, %ymm0, %ymm0
-; X64-AVX512-NEXT:    vinserti64x4 $1, %ymm2, %zmm2, %zmm2
 ; X64-AVX512-NEXT:    vpaddq %zmm2, %zmm1, %zmm1
----------------
yubing wrote:
> Hi, Simon. I have a question about previous code.
> Before ISEL, there are the following nodes:
> t42: i32 = X86ISD::Wrapper TargetConstantPool:i32<<8 x i32> <i32 1, i32 0, i32 2, i32 0, i32 3, i32 0, i32 4, i32 0>> 0
> t35: v8i32,ch = load<(load 32 from constant-pool)> t0, t42, undef:i32
> t36: v16i32 = X86ISD::SUBV_BROADCAST t35
> But they are not morphed into vbroadcasti64x4. Did you know why?
Its because the original ymm load (t35) has multiple uses so the pattern in tablegen doesn't match.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D92645/new/

https://reviews.llvm.org/D92645



More information about the llvm-commits mailing list