[PATCH] D68544: [X86][AVX] Access a scalar float/double as a free extract from a broadcast load (PR43217)

Simon Pilgrim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 14 10:53:00 PDT 2019


RKSimon marked an inline comment as done.
RKSimon added inline comments.


================
Comment at: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp:33437
+           User->getOpcode() == X86ISD::VBROADCAST_LOAD) &&
+          User->getValueSizeInBits(0) > VT.getSizeInBits()) {
+        return extractSubVector(SDValue(User, 0), 0, DAG, DL,
----------------
dantrushin wrote:
> Shouldn't we check for simple types equality here?
> One of my fuzzy tests fails because we try to replace 
> 
> ```
> t589: v8i16 = X86ISD::VBROADCAST t5, Test::iMeth-482306:0
> ```
> 
> with
> 
> 
> ```
> v8i32,ch = X86ISD::VBROADCAST_LOAD<(load 4 from %ir.52, addrspace 1)> t5:1, t30, Test::iMeth-482306:0
> t680: v4i32 = extract_subvector t679, Constant:i64<0>, Test::iMeth-482306:0
> ```
> 
> Which result in assertion violation in SelectionDAG::ReplaceAllUsesWith(), because types are incompatible...
@dantrushin Please can you send me a test case?


Repository:
  rL LLVM

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

https://reviews.llvm.org/D68544





More information about the llvm-commits mailing list