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

Denis Antrushin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 14 10:43:39 PDT 2019


dantrushin marked an inline comment as done.
dantrushin 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,
----------------
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...


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