Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: crosstest/test_vector_ops_main.cpp

Issue 1909013002: Subzero. X86. Lowers shufflevector using xmm instructions. (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: fixes 80-col Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698