This patch adds the vector.scalable_cast operation that allows
casting fixed-length vectors to scalable vectors and vice-versa.
This functionality is needed in order to interface VLS (vector length
specific) code with scalable functions and intrinsics.
This change has been discussed in:
According to the discussion, from the syntax and semantic point of view, maybe we should allow a small vector to be inserted into a large one.
Take the invalid test case in this patch as an example:
Although the size of the scalable vector depends on the target hardware, the vector<8xf32> should be smaller than vector<[16]xf32> in most cases, so this seems safe to use. Should we classify the cases like this as legal?