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 |