This patch adds a cost estimate for some missing sign and zero extensions. The
costs were determined by counting the number of shift instructions generated
without context for each new extension.
For example, the zero extension below has a cost estimate of 2.
define <8 x i32> @f(<8 x i16> %a) { entry: %b = zext <8 x i16> %a to <8 x i32> ret <8 x i32> %b }
Because the backend generates the following code.
ushll2 v1.4s, v0.8h, #0 ushll v0.4s, v0.4h, #0 ret
A small style issue: it would be nice to have a consistent order in this table. The logic for the ordering of the costs above doesn't match the one for the costs below.
FWIW I think the costs for the extensions between legal types (of size 64 or 128) was already 1 from the generic logic, but I think it's ok to have them explicitly specified here.