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

Side by Side Diff: crosstest/test_arith_main.cpp

Issue 404553007: Fix array index in test initialization. (Closed) Base URL: https://gerrit.chromium.org/gerrit/p/native_client/pnacl-subzero.git@master
Patch Set: Created 6 years, 5 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* crosstest.py --test=test_arith.cpp --test=test_arith_frem.ll \ 1 /* crosstest.py --test=test_arith.cpp --test=test_arith_frem.ll \
2 --test=test_arith_sqrt.ll --driver=test_arith_main.cpp \ 2 --test=test_arith_sqrt.ll --driver=test_arith_main.cpp \
3 --prefix=Subzero_ --output=test_arith */ 3 --prefix=Subzero_ --output=test_arith */
4 4
5 #include <stdint.h> 5 #include <stdint.h>
6 6
7 #include <climits> // CHAR_BIT 7 #include <climits> // CHAR_BIT
8 #include <limits> 8 #include <limits>
9 #include <cfloat> 9 #include <cfloat>
10 #include <cmath> // fmodf 10 #include <cmath> // fmodf
11 #include <cstring> // memcmp 11 #include <cstring> // memcmp
12 #include <iostream> 12 #include <iostream>
13 13
14 // Include test_arith.h twice - once normally, and once within the 14 // Include test_arith.h twice - once normally, and once within the
15 // Subzero_ namespace, corresponding to the llc and Subzero translated 15 // Subzero_ namespace, corresponding to the llc and Subzero translated
16 // object files, respectively. 16 // object files, respectively.
17 #include "test_arith.h" 17 #include "test_arith.h"
18 namespace Subzero_ { 18 namespace Subzero_ {
19 #include "test_arith.h" 19 #include "test_arith.h"
20 } 20 }
21 21
22 volatile unsigned Values[] = INT_VALUE_ARRAY; 22 volatile unsigned Values[] = INT_VALUE_ARRAY;
Jim Stichnoth 2014/07/18 22:50:35 Could you push Values[] and NumValues down into te
23 const static size_t NumValues = sizeof(Values) / sizeof(*Values); 23 const static size_t NumValues = sizeof(Values) / sizeof(*Values);
24 24
25 template <class T> bool inputsMayTriggerException(T Value1, T Value2) { 25 template <class T> bool inputsMayTriggerException(T Value1, T Value2) {
26 // Avoid HW divide-by-zero exception. 26 // Avoid HW divide-by-zero exception.
27 if (Value2 == 0) 27 if (Value2 == 0)
28 return true; 28 return true;
29 // Avoid HW overflow exception (on x86-32). TODO: adjust 29 // Avoid HW overflow exception (on x86-32). TODO: adjust
30 // for other architecture. 30 // for other architecture.
31 if (Value1 == std::numeric_limits<T>::min() && Value2 == -1) 31 if (Value1 == std::numeric_limits<T>::min() && Value2 == -1)
32 return true; 32 return true;
(...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after
185 }; 185 };
186 const static size_t NumFuncs = sizeof(Funcs) / sizeof(*Funcs); 186 const static size_t NumFuncs = sizeof(Funcs) / sizeof(*Funcs);
187 const static size_t NumElementsInType = 187 const static size_t NumElementsInType =
188 sizeof(TypeUnsigned) / sizeof(ElementTypeUnsigned); 188 sizeof(TypeUnsigned) / sizeof(ElementTypeUnsigned);
189 for (size_t f = 0; f < NumFuncs; ++f) { 189 for (size_t f = 0; f < NumFuncs; ++f) {
190 PRNG Index; 190 PRNG Index;
191 for (size_t i = 0; i < MaxTestsPerFunc; ++i) { 191 for (size_t i = 0; i < MaxTestsPerFunc; ++i) {
192 // Initialize the test vectors. 192 // Initialize the test vectors.
193 TypeUnsigned Value1, Value2; 193 TypeUnsigned Value1, Value2;
194 for (size_t j = 0; j < NumElementsInType;) { 194 for (size_t j = 0; j < NumElementsInType;) {
195 ElementTypeUnsigned Element1 = Values[Index() % NumElementsInType]; 195 ElementTypeUnsigned Element1 = Values[Index() % NumValues];
196 ElementTypeUnsigned Element2 = Values[Index() % NumElementsInType]; 196 ElementTypeUnsigned Element2 = Values[Index() % NumValues];
197 if (Funcs[f].ExcludeDivExceptions && 197 if (Funcs[f].ExcludeDivExceptions &&
198 inputsMayTriggerException<ElementTypeSigned>(Element1, Element2)) 198 inputsMayTriggerException<ElementTypeSigned>(Element1, Element2))
199 continue; 199 continue;
200 Value1[j] = Element1; 200 Value1[j] = Element1;
201 Value2[j] = Element2; 201 Value2[j] = Element2;
202 ++j; 202 ++j;
203 } 203 }
204 // Perform the test. 204 // Perform the test.
205 TypeUnsigned ResultSz = Funcs[f].FuncSz(Value1, Value2); 205 TypeUnsigned ResultSz = Funcs[f].FuncSz(Value1, Value2);
206 TypeUnsigned ResultLlc = Funcs[f].FuncLlc(Value1, Value2); 206 TypeUnsigned ResultLlc = Funcs[f].FuncLlc(Value1, Value2);
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 #undef X 303 #undef X
304 }; 304 };
305 const static size_t NumFuncs = sizeof(Funcs) / sizeof(*Funcs); 305 const static size_t NumFuncs = sizeof(Funcs) / sizeof(*Funcs);
306 const static size_t NumElementsInType = 4; 306 const static size_t NumElementsInType = 4;
307 for (size_t f = 0; f < NumFuncs; ++f) { 307 for (size_t f = 0; f < NumFuncs; ++f) {
308 PRNG Index; 308 PRNG Index;
309 for (size_t i = 0; i < MaxTestsPerFunc; ++i) { 309 for (size_t i = 0; i < MaxTestsPerFunc; ++i) {
310 // Initialize the test vectors. 310 // Initialize the test vectors.
311 v4f32 Value1, Value2; 311 v4f32 Value1, Value2;
312 for (size_t j = 0; j < NumElementsInType; ++j) { 312 for (size_t j = 0; j < NumElementsInType; ++j) {
313 Value1[j] = Values[Index() % NumElementsInType]; 313 Value1[j] = Values[Index() % NumValues];
314 Value2[j] = Values[Index() % NumElementsInType]; 314 Value2[j] = Values[Index() % NumValues];
315 } 315 }
316 // Perform the test. 316 // Perform the test.
317 v4f32 ResultSz = Funcs[f].FuncSz(Value1, Value2); 317 v4f32 ResultSz = Funcs[f].FuncSz(Value1, Value2);
318 v4f32 ResultLlc = Funcs[f].FuncLlc(Value1, Value2); 318 v4f32 ResultLlc = Funcs[f].FuncLlc(Value1, Value2);
319 ++TotalTests; 319 ++TotalTests;
320 if (!memcmp(&ResultSz, &ResultLlc, sizeof(ResultSz))) { 320 if (!memcmp(&ResultSz, &ResultLlc, sizeof(ResultSz))) {
321 ++Passes; 321 ++Passes;
322 } else { 322 } else {
323 ++Failures; 323 ++Failures;
324 std::cout << std::fixed << "test" << Funcs[f].Name << "v4f32" 324 std::cout << std::fixed << "test" << Funcs[f].Name << "v4f32"
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 v16si8 Sz_srem_v16i8(v16si8 a, v16si8 b) { return a % b; } 384 v16si8 Sz_srem_v16i8(v16si8 a, v16si8 b) { return a % b; }
385 v16ui8 Sz_urem_v16i8(v16ui8 a, v16ui8 b) { return a % b; } 385 v16ui8 Sz_urem_v16i8(v16ui8 a, v16ui8 b) { return a % b; }
386 386
387 v4f32 Sz_frem_v4f32(v4f32 a, v4f32 b) { 387 v4f32 Sz_frem_v4f32(v4f32 a, v4f32 b) {
388 v4f32 Result; 388 v4f32 Result;
389 for (int i = 0; i < 4; ++i) 389 for (int i = 0; i < 4; ++i)
390 Result[i] = fmodf(a[i], b[i]); 390 Result[i] = fmodf(a[i], b[i]);
391 return Result; 391 return Result;
392 } 392 }
393 } 393 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698