Index: crosstest/test_vector_ops_main.cpp |
diff --git a/crosstest/test_vector_ops_main.cpp b/crosstest/test_vector_ops_main.cpp |
index 1232799a9be27e47aff55107356f8dbcc98df1c0..9f274173aa4adbbbf6f2a1dbe46966ae786bf9b3 100644 |
--- a/crosstest/test_vector_ops_main.cpp |
+++ b/crosstest/test_vector_ops_main.cpp |
@@ -130,6 +130,41 @@ void testExtractElement(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
free(TestVectors); |
} |
+template <typename T> |
+void testShuffleVector(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
+ typedef typename VectorOps<T>::Ty Ty; |
+ typedef typename VectorOps<T>::ElementTy ElementTy; |
+ |
+ size_t NumTestVectors; |
+ Ty *TestVectors = getTestVectors<T>(NumTestVectors); |
+ |
+ for (size_t VI = 0; VI < NumTestVectors; ++VI) { |
+ Ty Vect0 = TestVectors[VI]; |
+ for (size_t VJ = 0; VJ < NumTestVectors; ++VJ) { |
+ Ty Vect1 = TestVectors[VJ]; |
+ for (uint32_t Which = 0; Which < VectorOps<T>::shufflevector_count(); |
+ ++Which) { |
+ Ty ResultLlc = VectorOps<T>::shufflevector(Vect0, Vect1, Which); |
+ Ty ResultSz = VectorOps<T>::Subzero_shufflevector(Vect0, Vect1, Which); |
+ ++TotalTests; |
+ if (!memcmp(&ResultLlc, &ResultSz, sizeof(ResultLlc))) { |
+ ++Passes; |
+ } else { |
+ ++Failures; |
+ std::cout << "shufflevector<" << VectorOps<T>::TypeName << ">(Vect0="; |
+ std::cout << vectAsString<T>(Vect0) |
+ << ", Vect1=" << vectAsString<T>(Vect1) << ", Which=" << VJ |
+ << ")\n"; |
+ std::cout << "llc=" << vectAsString<T>(ResultLlc) << "\n"; |
+ std::cout << "sz =" << vectAsString<T>(ResultSz) << "\n"; |
+ } |
+ } |
+ } |
+ } |
+ |
+ free(TestVectors); |
+} |
+ |
int main(int argc, char *argv[]) { |
size_t TotalTests = 0; |
size_t Passes = 0; |
@@ -157,6 +192,17 @@ int main(int argc, char *argv[]) { |
testExtractElement<v4ui32>(TotalTests, Passes, Failures); |
testExtractElement<v4f32>(TotalTests, Passes, Failures); |
+ testShuffleVector<v4i1>(TotalTests, Passes, Failures); |
+ testShuffleVector<v8i1>(TotalTests, Passes, Failures); |
+ testShuffleVector<v16i1>(TotalTests, Passes, Failures); |
+ testShuffleVector<v16si8>(TotalTests, Passes, Failures); |
+ testShuffleVector<v16ui8>(TotalTests, Passes, Failures); |
+ testShuffleVector<v8si16>(TotalTests, Passes, Failures); |
+ testShuffleVector<v8ui16>(TotalTests, Passes, Failures); |
+ testShuffleVector<v4si32>(TotalTests, Passes, Failures); |
+ testShuffleVector<v4ui32>(TotalTests, Passes, Failures); |
+ testShuffleVector<v4f32>(TotalTests, Passes, Failures); |
+ |
std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes |
<< " Failures=" << Failures << "\n"; |