diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/runner.py | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/runner.py b/tests/runner.py index 336d9d9d..7095b588 100644 --- a/tests/runner.py +++ b/tests/runner.py @@ -5630,6 +5630,49 @@ elif 'benchmark' in str(sys.argv): ''' self.do_benchmark(src, [], 'final: 720.') + def zzztest_copy(self): + src = r''' + #include<stdio.h> + struct vec { + int x, y, z; + int r, g, b; + vec(int x_, int y_, int z_, int r_, int g_, int b_) : x(x_), y(y_), z(z_), r(r_), g(g_), b(b_) {} + static vec add(vec a, vec b) { + return vec(a.x+b.x, a.y+b.y, a.z+b.z, a.r+b.r, a.g+b.g, a.b+b.b); + } + void norm() { + x %= 1024; + y %= 1024; + z %= 1024; + r %= 1024; + b %= 1024; + g %= 1024; + } + int sum() { return x + y + z + r + g + b; } + }; + int main() { + int total = 0; + for (int i = 0; i < 2500; i++) { + for (int j = 0; j < 1000; j++) { + vec c(i, i+i%10, j*2, i%255, j%120, i%15); + vec d(j+i%10, j*2, j%255, i%120, j%15, j); + vec e = c; + c.norm(); + d.norm(); + vec f = vec::add(c, d); + f = vec::add(e, f); + f.norm(); + f = vec::add(d, f); + total += f.sum() % 100; + total %= 10240; + } + } + printf("sum:%d\n", total); + return 1; + } + ''' + self.do_benchmark(src, [], 'sum:3588\n') + def test_fannkuch(self): src = open(path_from_root('tests', 'fannkuch.cpp'), 'r').read() self.do_benchmark(src, ['10'], 'Pfannkuchen(10) = 38.') |