If a fp scalar is loaded and then used as both a scalar and a vector broadcast, perform the load as a broadcast and then extract the scalar for 'free' from the 0th element.
This involved switching the order of the X86ISD::BROADCAST combines so we only convert to X86ISD::BROADCAST_LOAD once all other canonicalizations have been attempted.
Fixed PR43217
Shouldn't we check for simple types equality here?
One of my fuzzy tests fails because we try to replace
with
Which result in assertion violation in SelectionDAG::ReplaceAllUsesWith(), because types are incompatible...