This adds some default costs for fp extends and truncates, generally costing them as 1 per lane. If the type is not legal then the cost will include a call to an __aeabi_ function.
Some NEON code is also adjusted to make sure it applies to the expected types, now that fp16 is a more common thing.
Quickly looking at this, I was wondering 2 things here: