A splat of a vector multiply (either integer or FP) can be turned into a multiply-by-element:
splat (mul X, Y), Lane --> mul (splat X, Lane), (splat Y, Lane) --> mul-by-element (splat X, Lane), Y.[Lane]
These patterns showed up as an ARM regression in D60214, but we have this transform in IR, so it's an existing problem IIUC.
The constant cases look better, but I'm not sure if this is a win if both operands are variables.