When lowering vector shuffles into the xxsplti32dx instruction on Power10, we canonicalize the
right operand to be a BUILD_VECTOR and as a result, get the commuted vector shuffle node.
However, a vector shuffle will not always be returned as the result for a commuted vector shuffle.
In such a scenario, this patch updates the original cast of a shuffle into a dyn_cast<> and checks if
the shuffle is a valid vector shuffle node prior to obtaining the commuted shuffle mask.
This patch also adds a new test case that demonstrates this scenario (primarily seen on 32-bit), and
was originally a crash prior to this fix.
These register spills are not seen with any other target in the test case. Is this maybe an artifact of the test case, or something else? What happens on Linux 64 BE?