]> granicus.if.org Git - llvm/commit
[X86] Add DAG combine to turn (bitcast (vbroadcast_load)) into just a vbroadcast_load...
authorCraig Topper <craig.topper@intel.com>
Thu, 3 Oct 2019 05:30:02 +0000 (05:30 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 3 Oct 2019 05:30:02 +0000 (05:30 +0000)
commita0905148d0702b455787864f08c6aa81cafcacc0
tree96c8c16cb435440fcedb5d1759af9dae3ba9c9f4
parent1653d09ad34f76596c46ca5d5caa069498f831d1
[X86] Add DAG combine to turn (bitcast (vbroadcast_load)) into just a vbroadcast_load if the scalar size is the same.

This improves broadcast load folding of i64 elements on 32-bit
targets where i64 isn't legal.

Previously we had to represent these as vXf64 vbroadcast_loads and
a bitcast to vXi64. But we didn't have any isel patterns
looking for that.

This also allows us to remove or simplify some isel patterns that
were looking for bitcasted vbroadcast_loads.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373566 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/X86/X86ISelLowering.cpp
lib/Target/X86/X86InstrAVX512.td
test/CodeGen/X86/avx512-intrinsics-upgrade.ll
test/CodeGen/X86/avx512dqvl-intrinsics-upgrade.ll
test/CodeGen/X86/avx512ifma-intrinsics-upgrade.ll
test/CodeGen/X86/avx512ifma-intrinsics.ll
test/CodeGen/X86/avx512vl-intrinsics-upgrade.ll
test/CodeGen/X86/avx512vlvp2intersect-intrinsics.ll
test/CodeGen/X86/avx512vp2intersect-intrinsics.ll