| OLD | NEW |
| 1 //===- subzero/crosstest/test_vector_ops_main.cpp - Driver for tests ------===// | 1 //===- subzero/crosstest/test_vector_ops_main.cpp - Driver for tests ------===// |
| 2 // | 2 // |
| 3 // The Subzero Code Generator | 3 // The Subzero Code Generator |
| 4 // | 4 // |
| 5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
| 6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
| 7 // | 7 // |
| 8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
| 9 // | 9 // |
| 10 // Driver for crosstesting insertelement and extractelement operations | 10 // Driver for crosstesting insertelement and extractelement operations |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 std::cout << vectAsString<T>(Vect) << ", Pos=" << I << ")\n"; | 123 std::cout << vectAsString<T>(Vect) << ", Pos=" << I << ")\n"; |
| 124 std::cout << "llc=" << ResultLlc << "\n"; | 124 std::cout << "llc=" << ResultLlc << "\n"; |
| 125 std::cout << "sz =" << ResultSz << "\n"; | 125 std::cout << "sz =" << ResultSz << "\n"; |
| 126 } | 126 } |
| 127 } | 127 } |
| 128 } | 128 } |
| 129 | 129 |
| 130 free(TestVectors); | 130 free(TestVectors); |
| 131 } | 131 } |
| 132 | 132 |
| 133 template <typename T> |
| 134 void testShuffleVector(size_t &TotalTests, size_t &Passes, size_t &Failures) { |
| 135 typedef typename VectorOps<T>::Ty Ty; |
| 136 typedef typename VectorOps<T>::ElementTy ElementTy; |
| 137 |
| 138 size_t NumTestVectors; |
| 139 Ty *TestVectors = getTestVectors<T>(NumTestVectors); |
| 140 |
| 141 for (size_t VI = 0; VI < NumTestVectors; ++VI) { |
| 142 Ty Vect0 = TestVectors[VI]; |
| 143 for (size_t VJ = 0; VJ < NumTestVectors; ++VJ) { |
| 144 Ty Vect1 = TestVectors[VJ]; |
| 145 for (uint32_t Which = 0; Which < VectorOps<T>::shufflevector_count(); |
| 146 ++Which) { |
| 147 Ty ResultLlc = VectorOps<T>::shufflevector(Vect0, Vect1, Which); |
| 148 Ty ResultSz = VectorOps<T>::Subzero_shufflevector(Vect0, Vect1, Which); |
| 149 ++TotalTests; |
| 150 if (!memcmp(&ResultLlc, &ResultSz, sizeof(ResultLlc))) { |
| 151 ++Passes; |
| 152 } else { |
| 153 ++Failures; |
| 154 std::cout << "shufflevector<" << VectorOps<T>::TypeName << ">(Vect0="; |
| 155 std::cout << vectAsString<T>(Vect0) |
| 156 << ", Vect1=" << vectAsString<T>(Vect1) << ", Which=" << VJ |
| 157 << ")\n"; |
| 158 std::cout << "llc=" << vectAsString<T>(ResultLlc) << "\n"; |
| 159 std::cout << "sz =" << vectAsString<T>(ResultSz) << "\n"; |
| 160 } |
| 161 } |
| 162 } |
| 163 } |
| 164 |
| 165 free(TestVectors); |
| 166 } |
| 167 |
| 133 int main(int argc, char *argv[]) { | 168 int main(int argc, char *argv[]) { |
| 134 size_t TotalTests = 0; | 169 size_t TotalTests = 0; |
| 135 size_t Passes = 0; | 170 size_t Passes = 0; |
| 136 size_t Failures = 0; | 171 size_t Failures = 0; |
| 137 | 172 |
| 138 testInsertElement<v4i1>(TotalTests, Passes, Failures); | 173 testInsertElement<v4i1>(TotalTests, Passes, Failures); |
| 139 testInsertElement<v8i1>(TotalTests, Passes, Failures); | 174 testInsertElement<v8i1>(TotalTests, Passes, Failures); |
| 140 testInsertElement<v16i1>(TotalTests, Passes, Failures); | 175 testInsertElement<v16i1>(TotalTests, Passes, Failures); |
| 141 testInsertElement<v16si8>(TotalTests, Passes, Failures); | 176 testInsertElement<v16si8>(TotalTests, Passes, Failures); |
| 142 testInsertElement<v16ui8>(TotalTests, Passes, Failures); | 177 testInsertElement<v16ui8>(TotalTests, Passes, Failures); |
| 143 testInsertElement<v8si16>(TotalTests, Passes, Failures); | 178 testInsertElement<v8si16>(TotalTests, Passes, Failures); |
| 144 testInsertElement<v8ui16>(TotalTests, Passes, Failures); | 179 testInsertElement<v8ui16>(TotalTests, Passes, Failures); |
| 145 testInsertElement<v4si32>(TotalTests, Passes, Failures); | 180 testInsertElement<v4si32>(TotalTests, Passes, Failures); |
| 146 testInsertElement<v4ui32>(TotalTests, Passes, Failures); | 181 testInsertElement<v4ui32>(TotalTests, Passes, Failures); |
| 147 testInsertElement<v4f32>(TotalTests, Passes, Failures); | 182 testInsertElement<v4f32>(TotalTests, Passes, Failures); |
| 148 | 183 |
| 149 testExtractElement<v4i1>(TotalTests, Passes, Failures); | 184 testExtractElement<v4i1>(TotalTests, Passes, Failures); |
| 150 testExtractElement<v8i1>(TotalTests, Passes, Failures); | 185 testExtractElement<v8i1>(TotalTests, Passes, Failures); |
| 151 testExtractElement<v16i1>(TotalTests, Passes, Failures); | 186 testExtractElement<v16i1>(TotalTests, Passes, Failures); |
| 152 testExtractElement<v16si8>(TotalTests, Passes, Failures); | 187 testExtractElement<v16si8>(TotalTests, Passes, Failures); |
| 153 testExtractElement<v16ui8>(TotalTests, Passes, Failures); | 188 testExtractElement<v16ui8>(TotalTests, Passes, Failures); |
| 154 testExtractElement<v8si16>(TotalTests, Passes, Failures); | 189 testExtractElement<v8si16>(TotalTests, Passes, Failures); |
| 155 testExtractElement<v8ui16>(TotalTests, Passes, Failures); | 190 testExtractElement<v8ui16>(TotalTests, Passes, Failures); |
| 156 testExtractElement<v4si32>(TotalTests, Passes, Failures); | 191 testExtractElement<v4si32>(TotalTests, Passes, Failures); |
| 157 testExtractElement<v4ui32>(TotalTests, Passes, Failures); | 192 testExtractElement<v4ui32>(TotalTests, Passes, Failures); |
| 158 testExtractElement<v4f32>(TotalTests, Passes, Failures); | 193 testExtractElement<v4f32>(TotalTests, Passes, Failures); |
| 159 | 194 |
| 195 testShuffleVector<v4i1>(TotalTests, Passes, Failures); |
| 196 testShuffleVector<v8i1>(TotalTests, Passes, Failures); |
| 197 testShuffleVector<v16i1>(TotalTests, Passes, Failures); |
| 198 testShuffleVector<v16si8>(TotalTests, Passes, Failures); |
| 199 testShuffleVector<v16ui8>(TotalTests, Passes, Failures); |
| 200 testShuffleVector<v8si16>(TotalTests, Passes, Failures); |
| 201 testShuffleVector<v8ui16>(TotalTests, Passes, Failures); |
| 202 testShuffleVector<v4si32>(TotalTests, Passes, Failures); |
| 203 testShuffleVector<v4ui32>(TotalTests, Passes, Failures); |
| 204 testShuffleVector<v4f32>(TotalTests, Passes, Failures); |
| 205 |
| 160 std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes | 206 std::cout << "TotalTests=" << TotalTests << " Passes=" << Passes |
| 161 << " Failures=" << Failures << "\n"; | 207 << " Failures=" << Failures << "\n"; |
| 162 | 208 |
| 163 return Failures; | 209 return Failures; |
| 164 } | 210 } |
| OLD | NEW |