A vector mul(sext, sext) or mul(zext, zext) will be code generated as a single smull or umull instruction. This most notably effects v2i64 multiplies, which are otherwise not legal and need to be expanded.
The oneuse check has also been slightly changed, as it is already checked from the use of isWideningInstruction in getCastInstrCost.
While we are at it, look at shl in a follow up? :)