Vector components numbers restruction

The number of vector components is limited to maximum 16 . And looks that the maximum size of entire vector could not be more than 512 bits.
Why this limitation exits?
Is it related to LLVM type-legalizer? Using the ‘promote-element’ flag, the legalizer should change illegal types to be legal i.e int64 or float128 ?