The original plan was to turn this into its own pattern, but one of the difficulties was deeming when splitting the vector is required.
SplitIntegerStores essentially already did that by checking for field overlap.
Therefore, it was renamed to SplitStores and extended to splitting stores with values of vector and integer type.
The vector splitting is done in a simple manner by simply using extractelement to get each vector element. Subsequent pattern applications are responsible for further cleaning up the output and making it type-consistent.
Worst case, if the code cannot be transformed into a type-consistent form (due to e.g. the code explicitly doing partial writes to elements or similar), we might needlessly do a vector split.
nit: should we rename to max-vector-split-size since this may be used for loads as well at some point.