From 016a0e50a58311a900842a8e772d03073a1f0f63 Mon Sep 17 00:00:00 2001
From: Chris Lattner
+ <result> = shufflevector <n x <ty>> <v1>, <n x <ty>> <v2>, <n x uint> <mask> ; yields <n x <ty>> ++ +
+The 'shufflevector' instruction constructs a permutation of elements +from two input vectors, returning a vector of the same type. +
+ ++The first two operands of a 'shufflevector' instruction are vectors +with types that match each other and types that match the result of the +instruction. The third argument is a shuffle mask, which has the same number +of elements as the other vector type, but whose element type is always 'uint'. +
+ ++The shuffle mask operand is required to be a constant vector with either +constant integer or undef values. +
+ ++The elements of the two input vectors are numbered from left to right across +both of the vectors. The shuffle mask operand specifies, for each element of +the result vector, which element of the two input registers the result element +gets. The element selector may be undef (meaning "don't care") and the second +operand may be undef if performing a shuffle from only one vector. +
+ ++ %result = shufflevector <4 x int> %v1, <4 x int> %v2, <4 x uint>+; yields <4 x int> + %result = shufflevector <4 x int> %v1, <4 x int> undef, <4 x uint> ; yields <4 x int> - Identity shuffle. +