When the result type of insertelement needs to be split,
SplitVecRes_INSERT_VECTOR_ELT will try to store the vector to a
stack temporary, store the element at the location of the stack
temporary plus the index, and reload the Lo/Hi parts.
This patch does the following to ensure this works for scalable vectors:
- Sets the StackID with getStackIDForScalableVectors() in CreateStackTemporary
- Adds an IsScalable flag to getMemBasePlusOffset() and scales the offset by VScale when this is true
- Ensures the immediate is clamped correctly by clampDynamicVectorIndex so that we don't try to use an out of range index
Maybe call getVectorMinNumElements() instead?