* Re: Performance degradation on g++ 4.6
2011-07-29 21:29 ` Xinliang David Li
@ 2011-08-01 18:44 ` Oleg Smolsky
2011-08-02 5:48 ` Xinliang David Li
` (2 more replies)
0 siblings, 3 replies; 22+ messages in thread
From: Oleg Smolsky @ 2011-08-01 18:44 UTC (permalink / raw)
To: Xinliang David Li; +Cc: gcc
[-- Attachment #1: Type: text/plain, Size: 898 bytes --]
On 2011/7/29 14:07, Xinliang David Li wrote:
> Profiling tools are your best friend here. If you don't have access to
> any, the least you can do is to build the program with -pg option and
> use gprof tool to find out differences.
The test suite has a bunch of very basic C++ tests that are executed an
enormous number of times. I've built one with the obvious performance
degradation and attached the source, output and reports.
Here are some highlights:
v4.1: Total absolute time for int8_t constant folding: 30.42 sec
v4.6: Total absolute time for int8_t constant folding: 43.32 sec
Every one of the tests in this section had degraded... the first half
more than the second. I am not sure how much further I can take this -
the benchmarked code is very short and plain. I can post disassembly for
one (some?) of them if anyone is willing to take a look...
Thanks,
Oleg.
[-- Attachment #2: gmon41.prof --]
[-- Type: text/plain, Size: 190903 bytes --]
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
18.80 98.57 98.57 main
7.21 136.37 37.80 1 37.80 37.80 void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*)
3.97 157.16 20.79 1 20.79 20.79 void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*)
3.60 176.05 18.88 1 18.88 18.88 void test_constant<double, custom_constant_divide<double> >(double*, int, char const*)
3.50 194.39 18.34 1 18.34 18.34 void test_constant<double, custom_add_constants<double> >(double*, int, char const*)
3.50 212.72 18.33 1 18.33 18.33 void test_constant<float, custom_add_constants<float> >(float*, int, char const*)
3.49 230.99 18.27 1 18.27 18.27 void test_constant<float, custom_divide_constants<float> >(float*, int, char const*)
3.49 249.26 18.27 1 18.27 18.27 void test_constant<double, custom_multiply_constants<double> >(double*, int, char const*)
3.49 267.53 18.27 1 18.27 18.27 void test_constant<float, custom_sub_constants<float> >(float*, int, char const*)
3.49 285.81 18.27 1 18.27 18.27 void test_constant<float, custom_multiply_constants<float> >(float*, int, char const*)
3.49 304.08 18.27 1 18.27 18.27 void test_constant<double, custom_two<double> >(double*, int, char const*)
3.49 322.35 18.27 1 18.27 18.27 void test_constant<double, custom_sub_constants<double> >(double*, int, char const*)
3.48 340.61 18.26 1 18.26 18.26 void test_constant<double, custom_divide_constants<double> >(double*, int, char const*)
1.99 351.03 10.42 1 10.42 10.42 void test_constant<float, custom_constant_divide<float> >(float*, int, char const*)
0.67 354.53 3.50 1 3.50 3.50 void test_constant<int, custom_multiple_constant_divide<int> >(int*, int, char const*)
0.65 357.96 3.43 1 3.43 3.43 void test_constant<long, custom_multiple_constant_divide<long> >(long*, int, char const*)
0.62 361.19 3.23 1 3.23 3.23 void test_constant<int, custom_constant_divide<int> >(int*, int, char const*)
0.61 364.40 3.21 1 3.21 3.21 void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*)
0.61 367.60 3.20 1 3.20 3.20 void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*)
0.59 370.70 3.10 1 3.10 3.10 void test_constant<long, custom_constant_divide<long> >(long*, int, char const*)
0.59 373.77 3.07 1 3.07 3.07 void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*)
0.58 376.83 3.06 1 3.06 3.06 void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*)
0.50 379.46 2.63 1 2.63 2.63 void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*)
0.48 381.99 2.52 1 2.52 2.52 void test_constant<unsigned int, custom_constant_divide<unsigned int> >(unsigned int*, int, char const*)
0.48 384.51 2.52 1 2.52 2.52 void test_constant<unsigned int, custom_multiple_constant_divide<unsigned int> >(unsigned int*, int, char const*)
0.47 386.97 2.46 1 2.46 2.46 void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*)
0.47 389.41 2.44 1 2.44 2.44 void test_constant<unsigned long, custom_constant_divide<unsigned long> >(unsigned long*, int, char const*)
0.46 391.84 2.43 1 2.43 2.43 void test_constant<unsigned long, custom_multiple_constant_divide<unsigned long> >(unsigned long*, int, char const*)
0.36 393.73 1.89 1 1.89 1.89 void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*)
0.36 395.61 1.88 1 1.88 1.88 void test_constant<double, custom_constant_add<double> >(double*, int, char const*)
0.36 397.49 1.88 1 1.88 1.88 void test_constant<double, custom_constant_sub<double> >(double*, int, char const*)
0.36 399.37 1.88 1 1.88 1.88 void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*)
0.35 401.22 1.85 1 1.85 1.85 void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*)
0.35 403.07 1.85 1 1.85 1.85 void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*)
0.35 404.92 1.85 1 1.85 1.85 void test_constant<long, custom_multiple_constant_multiply<long> >(long*, int, char const*)
0.35 406.77 1.85 1 1.85 1.85 void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*)
0.35 408.62 1.85 1 1.85 1.85 void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*)
0.35 410.46 1.84 1 1.84 1.84 void test_constant<float, custom_constant_sub<float> >(float*, int, char const*)
0.35 412.30 1.84 1 1.84 1.84 void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*)
0.35 414.14 1.84 1 1.84 1.84 void test_constant<long, custom_constant_multiply<long> >(long*, int, char const*)
0.35 415.98 1.84 1 1.84 1.84 void test_constant<unsigned long, custom_constant_multiply<unsigned long> >(unsigned long*, int, char const*)
0.35 417.81 1.83 1 1.83 1.83 void test_constant<float, custom_constant_add<float> >(float*, int, char const*)
0.35 419.64 1.83 1 1.83 1.83 void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*)
0.35 421.47 1.83 1 1.83 1.83 void test_constant<unsigned long, custom_multiple_constant_multiply<unsigned long> >(unsigned long*, int, char const*)
0.35 423.29 1.82 1 1.82 1.82 void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*)
0.34 425.08 1.79 1 1.79 1.79 void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*)
0.34 426.86 1.78 1 1.78 1.78 void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*)
0.34 428.63 1.77 1 1.77 1.77 void test_constant<int, custom_constant_multiply<int> >(int*, int, char const*)
0.34 430.40 1.77 1 1.77 1.77 void test_constant<unsigned int, custom_constant_multiply<unsigned int> >(unsigned int*, int, char const*)
0.34 432.16 1.76 1 1.76 1.76 void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*)
0.34 433.92 1.76 1 1.76 1.76 void test_constant<unsigned int, custom_multiple_constant_multiply<unsigned int> >(unsigned int*, int, char const*)
0.27 435.35 1.43 1 1.43 1.43 void test_constant<long, custom_constant_and<long> >(long*, int, char const*)
0.27 436.78 1.43 1 1.43 1.43 void test_constant<long, custom_constant_xor<long> >(long*, int, char const*)
0.27 438.21 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_constant_xor<unsigned long> >(unsigned long*, int, char const*)
0.27 439.64 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_multiple_constant_divide2<unsigned long> >(unsigned long*, int, char const*)
0.27 441.07 1.43 1 1.43 1.43 void test_constant<long, custom_constant_or<long> >(long*, int, char const*)
0.27 442.50 1.43 1 1.43 1.43 void test_constant<long, custom_constant_add<long> >(long*, int, char const*)
0.27 443.93 1.43 1 1.43 1.43 void test_constant<long, custom_multiple_constant_add<long> >(long*, int, char const*)
0.27 445.36 1.43 1 1.43 1.43 void test_constant<long, custom_multiple_constant_xor<long> >(long*, int, char const*)
0.27 446.79 1.43 1 1.43 1.43 void test_constant<long, custom_multiple_constant_divide2<long> >(long*, int, char const*)
0.27 448.22 1.43 1 1.43 1.43 void test_constant<long, custom_multiple_constant_multiply2<long> >(long*, int, char const*)
0.27 449.65 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_constant_and<unsigned long> >(unsigned long*, int, char const*)
0.27 451.08 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_multiple_constant_or<unsigned long> >(unsigned long*, int, char const*)
0.27 452.51 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_multiple_constant_add<unsigned long> >(unsigned long*, int, char const*)
0.27 453.94 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_multiple_constant_and<unsigned long> >(unsigned long*, int, char const*)
0.27 455.37 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_multiple_constant_multiply2<unsigned long> >(unsigned long*, int, char const*)
0.27 456.80 1.43 1 1.43 1.43 void test_constant<long, custom_multiple_constant_sub<long> >(long*, int, char const*)
0.27 458.23 1.43 1 1.43 1.43 void test_constant<unsigned long, custom_constant_sub<unsigned long> >(unsigned long*, int, char const*)
0.27 459.65 1.42 1 1.42 1.42 void test_constant<long, custom_constant_sub<long> >(long*, int, char const*)
0.27 461.07 1.42 1 1.42 1.42 void test_constant<unsigned long, custom_multiple_constant_xor<unsigned long> >(unsigned long*, int, char const*)
0.27 462.49 1.42 1 1.42 1.42 void test_constant<long, custom_multiple_constant_or<long> >(long*, int, char const*)
0.27 463.91 1.42 1 1.42 1.42 void test_constant<long, custom_multiple_constant_and<long> >(long*, int, char const*)
0.27 465.33 1.42 1 1.42 1.42 void test_constant<unsigned long, custom_constant_or<unsigned long> >(unsigned long*, int, char const*)
0.27 466.75 1.42 1 1.42 1.42 void test_constant<unsigned long, custom_constant_add<unsigned long> >(unsigned long*, int, char const*)
0.27 468.17 1.42 1 1.42 1.42 void test_constant<unsigned long, custom_multiple_constant_sub<unsigned long> >(unsigned long*, int, char const*)
0.27 469.57 1.40 1 1.40 1.40 void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*)
0.27 470.97 1.40 1 1.40 1.40 void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*)
0.27 472.36 1.39 1 1.39 1.39 void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*)
0.27 473.75 1.39 1 1.39 1.39 void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*)
0.27 475.14 1.39 1 1.39 1.39 void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*)
0.27 476.53 1.39 1 1.39 1.39 void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*)
0.27 477.92 1.39 1 1.39 1.39 void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*)
0.27 479.31 1.39 1 1.39 1.39 void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*)
0.26 480.69 1.38 1 1.38 1.38 void test_constant<int, custom_constant_or<int> >(int*, int, char const*)
0.26 482.07 1.38 1 1.38 1.38 void test_constant<int, custom_constant_and<int> >(int*, int, char const*)
0.26 483.45 1.38 1 1.38 1.38 void test_constant<int, custom_constant_sub<int> >(int*, int, char const*)
0.26 484.83 1.38 1 1.38 1.38 void test_constant<int, custom_multiple_constant_xor<int> >(int*, int, char const*)
0.26 486.21 1.38 1 1.38 1.38 void test_constant<unsigned int, custom_constant_sub<unsigned int> >(unsigned int*, int, char const*)
0.26 487.59 1.38 1 1.38 1.38 void test_constant<unsigned int, custom_multiple_constant_or<unsigned int> >(unsigned int*, int, char const*)
0.26 488.97 1.38 1 1.38 1.38 void test_constant<unsigned int, custom_multiple_constant_and<unsigned int> >(unsigned int*, int, char const*)
0.26 490.35 1.38 1 1.38 1.38 void test_constant<unsigned int, custom_multiple_constant_xor<unsigned int> >(unsigned int*, int, char const*)
0.26 491.74 1.38 1 1.38 1.38 void test_constant<unsigned int, custom_multiple_constant_multiply2<unsigned int> >(unsigned int*, int, char const*)
0.26 493.12 1.38 1 1.38 1.38 void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*)
0.26 494.50 1.38 1 1.38 1.38 void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*)
0.26 495.88 1.38 1 1.38 1.38 void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*)
0.26 497.26 1.38 1 1.38 1.38 void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*)
0.26 498.64 1.38 1 1.38 1.38 void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*)
0.26 500.01 1.37 1 1.37 1.37 void test_constant<int, custom_constant_add<int> >(int*, int, char const*)
0.26 501.38 1.37 1 1.37 1.37 void test_constant<int, custom_constant_xor<int> >(int*, int, char const*)
0.26 502.75 1.37 1 1.37 1.37 void test_constant<int, custom_multiple_constant_or<int> >(int*, int, char const*)
0.26 504.12 1.37 1 1.37 1.37 void test_constant<int, custom_multiple_constant_add<int> >(int*, int, char const*)
0.26 505.49 1.37 1 1.37 1.37 void test_constant<unsigned int, custom_constant_or<unsigned int> >(unsigned int*, int, char const*)
0.26 506.86 1.37 1 1.37 1.37 void test_constant<unsigned int, custom_constant_add<unsigned int> >(unsigned int*, int, char const*)
0.26 508.23 1.37 1 1.37 1.37 void test_constant<unsigned int, custom_multiple_constant_add<unsigned int> >(unsigned int*, int, char const*)
0.26 509.60 1.37 1 1.37 1.37 void test_constant<unsigned int, custom_multiple_constant_sub<unsigned int> >(unsigned int*, int, char const*)
0.26 510.97 1.37 1 1.37 1.37 void test_constant<unsigned int, custom_multiple_constant_divide2<unsigned int> >(unsigned int*, int, char const*)
0.26 512.34 1.37 1 1.37 1.37 void test_constant<int, custom_multiple_constant_and<int> >(int*, int, char const*)
0.26 513.71 1.37 1 1.37 1.37 void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*)
0.26 515.08 1.37 1 1.37 1.37 void test_constant<int, custom_multiple_constant_divide2<int> >(int*, int, char const*)
0.26 516.45 1.37 1 1.37 1.37 void test_constant<unsigned int, custom_constant_and<unsigned int> >(unsigned int*, int, char const*)
0.26 517.82 1.37 1 1.37 1.37 void test_constant<unsigned int, custom_constant_xor<unsigned int> >(unsigned int*, int, char const*)
0.23 519.05 1.23 1 1.23 1.23 void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*)
0.23 520.27 1.22 1 1.22 1.22 void test_constant<long, custom_multiple_constant_mixed<long> >(long*, int, char const*)
0.23 521.49 1.22 1 1.22 1.22 void test_constant<int, custom_multiple_constant_mixed<int> >(int*, int, char const*)
0.23 522.71 1.22 1 1.22 1.22 void test_constant<unsigned int, custom_multiple_constant_mixed<unsigned int> >(unsigned int*, int, char const*)
0.23 523.93 1.22 1 1.22 1.22 void test_constant<unsigned long, custom_multiple_constant_mixed<unsigned long> >(unsigned long*, int, char const*)
0.00 523.95 0.02 2000000 0.00 0.00 void check_shifted_sum<short, custom_notequal_constants<short> >(short)
0.00 523.97 0.02 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_divide<signed char> >(signed char)
0.00 523.98 0.01 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_or_constants<signed char> >(signed char)
0.00 523.99 0.01 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_and_constants<signed char> >(signed char)
0.00 524.00 0.01 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_lessthan_constants<signed char> >(signed char)
0.00 524.01 0.01 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_multiply_constants<signed char> >(signed char)
0.00 524.02 0.01 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_notequal_constants<signed char> >(signed char)
0.00 524.03 0.01 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_lessthanequal_constants<signed char> >(signed char)
0.00 524.04 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_or_constants<unsigned char> >(unsigned char)
0.00 524.05 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_lessthanequal_constants<unsigned char> >(unsigned char)
0.00 524.06 0.01 2000000 0.00 0.00 void check_shifted_sum<short, custom_two<short> >(short)
0.00 524.07 0.01 2000000 0.00 0.00 void check_shifted_sum<short, custom_or_constants<short> >(short)
0.00 524.08 0.01 2000000 0.00 0.00 void check_shifted_sum<short, custom_mod_constants<short> >(short)
0.00 524.09 0.01 2000000 0.00 0.00 void check_shifted_sum<short, custom_lessthan_constants<short> >(short)
0.00 524.10 0.01 2000000 0.00 0.00 void check_shifted_sum<short, custom_greaterthanequal_constants<short> >(short)
0.00 524.11 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_mod_constants<unsigned short> >(unsigned short)
0.00 524.12 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_lessthan_constants<unsigned short> >(unsigned short)
0.00 524.13 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_notequal_constants<unsigned short> >(unsigned short)
0.00 524.14 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_greaterthan_constants<unsigned short> >(unsigned short)
0.00 524.15 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_greaterthanequal_constants<unsigned short> >(unsigned short)
0.00 524.16 0.01 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_multiply2<signed char> >(signed char)
0.00 524.17 0.01 200000 0.00 0.00 void check_shifted_sum<double, custom_multiple_constant_mixed<double> >(double)
0.00 524.18 0.01 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_add<short> >(short)
0.00 524.19 0.01 1 0.01 0.01 void test_constant<int, custom_or_constants<int> >(int*, int, char const*)
0.00 524.20 0.01 1 0.01 0.01 void test_constant<unsigned int, custom_or_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.21 0.01 1 0.01 0.01 void test_constant<unsigned long, custom_xor_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.21 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_divide_constants<unsigned short> >(unsigned short)
0.00 524.22 0.01 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_multiply_constants<unsigned short> >(unsigned short)
0.00 524.22 0.01 200000 0.00 0.00 void check_shifted_sum<short, custom_constant_or<short> >(short)
0.00 524.23 0.01 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_and<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_two<signed char> >(signed char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_mod_constants<signed char> >(signed char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_xor_constants<signed char> >(signed char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_equal_constants<signed char> >(signed char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_divide_constants<signed char> >(signed char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_greaterthan_constants<signed char> >(signed char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<signed char, custom_greaterthanequal_constants<signed char> >(signed char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<float, custom_two<float> >(float)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_two<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_add_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_and_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_mod_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_sub_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_xor_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_equal_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_divide_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_lessthan_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiply_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_notequal_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_greaterthan_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned char, custom_greaterthanequal_constants<unsigned char> >(unsigned char)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned int, custom_two<unsigned int> >(unsigned int)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_add_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_and_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_sub_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_xor_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_equal_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_divide_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_multiply_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_greaterthan_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<short, custom_lessthanequal_constants<short> >(short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_two<unsigned short> >(unsigned short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_add_constants<unsigned short> >(unsigned short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_sub_constants<unsigned short> >(unsigned short)
0.00 524.23 0.00 2000000 0.00 0.00 void check_shifted_sum<unsigned short, custom_equal_constants<unsigned short> >(unsigned short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_constant_or<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_constant_add<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_constant_and<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_constant_sub<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_constant_xor<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_constant_divide<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_constant_multiply<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_or<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_add<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_and<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_sub<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_xor<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_mixed<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_divide2<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<signed char, custom_multiple_constant_multiply<signed char> >(signed char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_constant_or<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_constant_add<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_constant_and<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_constant_sub<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_constant_xor<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_constant_divide<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_constant_multiply<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_mixed<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_multiply<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_constant_add<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_constant_and<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_constant_sub<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_constant_xor<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_constant_divide<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_constant_multiply<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_or<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_sub<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_xor<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_mixed<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_divide<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_divide2<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_multiply<short> >(short)
0.00 524.23 0.00 200000 0.00 0.00 void check_shifted_sum<short, custom_multiple_constant_multiply2<short> >(short)
0.00 524.23 0.00 110 0.00 0.00 start_timer()
0.00 524.23 0.00 110 0.00 0.00 record_result(double, char const*)
0.00 524.23 0.00 110 0.00 0.00 timer()
0.00 524.23 0.00 20 0.00 0.00 summarize(char const*, int, int, int, int)
0.00 524.23 0.00 1 0.00 0.00 global constructors keyed to results
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_two<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_add_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_and_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_mod_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_sub_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_xor_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_equal_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_divide_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_lessthan_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_multiply_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_notequal_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_greaterthan_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_lessthanequal_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<int, custom_greaterthanequal_constants<int> >(int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_add_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_and_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_mod_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_sub_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_xor_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_equal_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_divide_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_lessthan_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_multiply_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_notequal_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_greaterthan_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_lessthanequal_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned int, custom_greaterthanequal_constants<unsigned int> >(unsigned int*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_two<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_or_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_add_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_and_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_mod_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_sub_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_xor_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_equal_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_divide_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_lessthan_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_multiply_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_notequal_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_greaterthan_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_lessthanequal_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<long, custom_greaterthanequal_constants<long> >(long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_two<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_or_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_add_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_and_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_mod_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_sub_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_equal_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_divide_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_lessthan_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_multiply_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_notequal_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_greaterthan_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_lessthanequal_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned long, custom_greaterthanequal_constants<unsigned long> >(unsigned long*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned short, custom_or_constants<unsigned short> >(unsigned short*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned short, custom_and_constants<unsigned short> >(unsigned short*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned short, custom_xor_constants<unsigned short> >(unsigned short*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 void test_constant<unsigned short, custom_lessthanequal_constants<unsigned short> >(unsigned short*, int, char const*)
0.00 524.23 0.00 1 0.00 0.00 __static_initialization_and_destruction_0(int, int)
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
\f
Call graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 0.00% of 524.23 seconds
index % time self children called name
<spontaneous>
[1] 100.0 98.57 425.66 main [1]
37.80 0.00 1/1 void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*) [2]
20.79 0.00 1/1 void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*) [3]
18.88 0.00 1/1 void test_constant<double, custom_constant_divide<double> >(double*, int, char const*) [4]
18.34 0.00 1/1 void test_constant<double, custom_add_constants<double> >(double*, int, char const*) [5]
18.33 0.00 1/1 void test_constant<float, custom_add_constants<float> >(float*, int, char const*) [6]
18.27 0.00 1/1 void test_constant<float, custom_divide_constants<float> >(float*, int, char const*) [7]
18.27 0.00 1/1 void test_constant<float, custom_sub_constants<float> >(float*, int, char const*) [9]
18.27 0.00 1/1 void test_constant<float, custom_multiply_constants<float> >(float*, int, char const*) [10]
18.27 0.00 1/1 void test_constant<double, custom_multiply_constants<double> >(double*, int, char const*) [8]
18.27 0.00 1/1 void test_constant<double, custom_two<double> >(double*, int, char const*) [11]
18.27 0.00 1/1 void test_constant<double, custom_sub_constants<double> >(double*, int, char const*) [12]
18.26 0.00 1/1 void test_constant<double, custom_divide_constants<double> >(double*, int, char const*) [13]
10.42 0.00 1/1 void test_constant<float, custom_constant_divide<float> >(float*, int, char const*) [14]
3.50 0.00 1/1 void test_constant<int, custom_multiple_constant_divide<int> >(int*, int, char const*) [15]
3.43 0.00 1/1 void test_constant<long, custom_multiple_constant_divide<long> >(long*, int, char const*) [16]
3.23 0.00 1/1 void test_constant<int, custom_constant_divide<int> >(int*, int, char const*) [17]
3.21 0.00 1/1 void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*) [18]
3.20 0.00 1/1 void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*) [19]
3.10 0.00 1/1 void test_constant<long, custom_constant_divide<long> >(long*, int, char const*) [20]
3.07 0.00 1/1 void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*) [21]
3.06 0.00 1/1 void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*) [22]
2.63 0.00 1/1 void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*) [23]
2.52 0.00 1/1 void test_constant<unsigned int, custom_constant_divide<unsigned int> >(unsigned int*, int, char const*) [24]
2.52 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_divide<unsigned int> >(unsigned int*, int, char const*) [25]
2.46 0.00 1/1 void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*) [26]
2.44 0.00 1/1 void test_constant<unsigned long, custom_constant_divide<unsigned long> >(unsigned long*, int, char const*) [27]
2.43 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_divide<unsigned long> >(unsigned long*, int, char const*) [28]
1.89 0.00 1/1 void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*) [29]
1.88 0.00 1/1 void test_constant<double, custom_constant_add<double> >(double*, int, char const*) [30]
1.88 0.00 1/1 void test_constant<double, custom_constant_sub<double> >(double*, int, char const*) [31]
1.88 0.00 1/1 void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*) [32]
1.85 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [36]
1.85 0.00 1/1 void test_constant<long, custom_multiple_constant_multiply<long> >(long*, int, char const*) [35]
1.85 0.00 1/1 void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*) [34]
1.85 0.00 1/1 void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*) [33]
1.85 0.00 1/1 void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [37]
1.84 0.00 1/1 void test_constant<long, custom_constant_multiply<long> >(long*, int, char const*) [40]
1.84 0.00 1/1 void test_constant<unsigned long, custom_constant_multiply<unsigned long> >(unsigned long*, int, char const*) [41]
1.84 0.00 1/1 void test_constant<float, custom_constant_sub<float> >(float*, int, char const*) [38]
1.84 0.00 1/1 void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*) [39]
1.83 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_multiply<unsigned long> >(unsigned long*, int, char const*) [44]
1.83 0.00 1/1 void test_constant<float, custom_constant_add<float> >(float*, int, char const*) [42]
1.83 0.00 1/1 void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*) [43]
1.82 0.00 1/1 void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*) [45]
1.79 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*) [46]
1.78 0.00 1/1 void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*) [47]
1.77 0.00 1/1 void test_constant<int, custom_constant_multiply<int> >(int*, int, char const*) [48]
1.77 0.00 1/1 void test_constant<unsigned int, custom_constant_multiply<unsigned int> >(unsigned int*, int, char const*) [49]
1.76 0.00 1/1 void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*) [50]
1.76 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_multiply<unsigned int> >(unsigned int*, int, char const*) [51]
1.43 0.00 1/1 void test_constant<long, custom_constant_and<long> >(long*, int, char const*) [52]
1.43 0.00 1/1 void test_constant<long, custom_constant_xor<long> >(long*, int, char const*) [53]
1.43 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_divide2<unsigned long> >(unsigned long*, int, char const*) [55]
1.43 0.00 1/1 void test_constant<unsigned long, custom_constant_xor<unsigned long> >(unsigned long*, int, char const*) [54]
1.43 0.00 1/1 void test_constant<long, custom_constant_add<long> >(long*, int, char const*) [57]
1.43 0.00 1/1 void test_constant<long, custom_multiple_constant_add<long> >(long*, int, char const*) [58]
1.43 0.00 1/1 void test_constant<long, custom_multiple_constant_multiply2<long> >(long*, int, char const*) [61]
1.43 0.00 1/1 void test_constant<long, custom_multiple_constant_divide2<long> >(long*, int, char const*) [60]
1.43 0.00 1/1 void test_constant<long, custom_constant_or<long> >(long*, int, char const*) [56]
1.43 0.00 1/1 void test_constant<long, custom_multiple_constant_xor<long> >(long*, int, char const*) [59]
1.43 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_add<unsigned long> >(unsigned long*, int, char const*) [64]
1.43 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_multiply2<unsigned long> >(unsigned long*, int, char const*) [66]
1.43 0.00 1/1 void test_constant<unsigned long, custom_constant_and<unsigned long> >(unsigned long*, int, char const*) [62]
1.43 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_and<unsigned long> >(unsigned long*, int, char const*) [65]
1.43 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_or<unsigned long> >(unsigned long*, int, char const*) [63]
1.43 0.00 1/1 void test_constant<long, custom_multiple_constant_sub<long> >(long*, int, char const*) [67]
1.43 0.00 1/1 void test_constant<unsigned long, custom_constant_sub<unsigned long> >(unsigned long*, int, char const*) [68]
1.42 0.00 1/1 void test_constant<long, custom_constant_sub<long> >(long*, int, char const*) [69]
1.42 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_xor<unsigned long> >(unsigned long*, int, char const*) [70]
1.42 0.00 1/1 void test_constant<long, custom_multiple_constant_and<long> >(long*, int, char const*) [72]
1.42 0.00 1/1 void test_constant<long, custom_multiple_constant_or<long> >(long*, int, char const*) [71]
1.42 0.00 1/1 void test_constant<unsigned long, custom_constant_add<unsigned long> >(unsigned long*, int, char const*) [74]
1.42 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_sub<unsigned long> >(unsigned long*, int, char const*) [75]
1.42 0.00 1/1 void test_constant<unsigned long, custom_constant_or<unsigned long> >(unsigned long*, int, char const*) [73]
1.40 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*) [77]
1.40 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*) [76]
1.39 0.00 1/1 void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*) [78]
1.39 0.00 1/1 void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*) [80]
1.39 0.00 1/1 void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*) [79]
1.39 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*) [81]
1.39 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*) [83]
1.39 0.00 1/1 void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*) [82]
1.38 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*) [94]
1.38 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*) [95]
1.38 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*) [96]
1.38 0.00 1/1 void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*) [93]
1.38 0.00 1/1 void test_constant<int, custom_constant_sub<int> >(int*, int, char const*) [86]
1.38 0.00 1/1 void test_constant<int, custom_constant_and<int> >(int*, int, char const*) [85]
1.38 0.00 1/1 void test_constant<int, custom_constant_or<int> >(int*, int, char const*) [84]
1.38 0.00 1/1 void test_constant<int, custom_multiple_constant_xor<int> >(int*, int, char const*) [87]
1.38 0.00 1/1 void test_constant<unsigned int, custom_constant_sub<unsigned int> >(unsigned int*, int, char const*) [88]
1.38 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_multiply2<unsigned int> >(unsigned int*, int, char const*) [92]
1.38 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_and<unsigned int> >(unsigned int*, int, char const*) [90]
1.38 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_or<unsigned int> >(unsigned int*, int, char const*) [89]
1.38 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_xor<unsigned int> >(unsigned int*, int, char const*) [91]
1.38 0.00 1/1 void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*) [97]
1.37 0.00 1/1 void test_constant<int, custom_constant_add<int> >(int*, int, char const*) [98]
1.37 0.00 1/1 void test_constant<int, custom_multiple_constant_add<int> >(int*, int, char const*) [101]
1.37 0.00 1/1 void test_constant<int, custom_multiple_constant_or<int> >(int*, int, char const*) [100]
1.37 0.00 1/1 void test_constant<int, custom_constant_xor<int> >(int*, int, char const*) [99]
1.37 0.00 1/1 void test_constant<unsigned int, custom_constant_add<unsigned int> >(unsigned int*, int, char const*) [103]
1.37 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_add<unsigned int> >(unsigned int*, int, char const*) [104]
1.37 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_sub<unsigned int> >(unsigned int*, int, char const*) [105]
1.37 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_divide2<unsigned int> >(unsigned int*, int, char const*) [106]
1.37 0.00 1/1 void test_constant<unsigned int, custom_constant_or<unsigned int> >(unsigned int*, int, char const*) [102]
1.37 0.00 1/1 void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*) [108]
1.37 0.00 1/1 void test_constant<int, custom_multiple_constant_divide2<int> >(int*, int, char const*) [109]
1.37 0.00 1/1 void test_constant<int, custom_multiple_constant_and<int> >(int*, int, char const*) [107]
1.37 0.00 1/1 void test_constant<unsigned int, custom_constant_and<unsigned int> >(unsigned int*, int, char const*) [110]
1.37 0.00 1/1 void test_constant<unsigned int, custom_constant_xor<unsigned int> >(unsigned int*, int, char const*) [111]
1.23 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*) [112]
1.22 0.00 1/1 void test_constant<long, custom_multiple_constant_mixed<long> >(long*, int, char const*) [113]
1.22 0.00 1/1 void test_constant<int, custom_multiple_constant_mixed<int> >(int*, int, char const*) [114]
1.22 0.00 1/1 void test_constant<unsigned int, custom_multiple_constant_mixed<unsigned int> >(unsigned int*, int, char const*) [115]
1.22 0.00 1/1 void test_constant<unsigned long, custom_multiple_constant_mixed<unsigned long> >(unsigned long*, int, char const*) [116]
0.02 0.00 2000000/2000000 void check_shifted_sum<short, custom_notequal_constants<short> >(short) [117]
0.02 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_divide<signed char> >(signed char) [118]
0.01 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_multiply_constants<signed char> >(signed char) [122]
0.01 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_notequal_constants<signed char> >(signed char) [123]
0.01 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_lessthan_constants<signed char> >(signed char) [121]
0.01 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_lessthanequal_constants<signed char> >(signed char) [124]
0.01 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_and_constants<signed char> >(signed char) [120]
0.01 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_or_constants<signed char> >(signed char) [119]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_lessthanequal_constants<unsigned char> >(unsigned char) [126]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_or_constants<unsigned char> >(unsigned char) [125]
0.01 0.00 2000000/2000000 void check_shifted_sum<short, custom_two<short> >(short) [127]
0.01 0.00 2000000/2000000 void check_shifted_sum<short, custom_mod_constants<short> >(short) [129]
0.01 0.00 2000000/2000000 void check_shifted_sum<short, custom_lessthan_constants<short> >(short) [130]
0.01 0.00 2000000/2000000 void check_shifted_sum<short, custom_greaterthanequal_constants<short> >(short) [131]
0.01 0.00 2000000/2000000 void check_shifted_sum<short, custom_or_constants<short> >(short) [128]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_mod_constants<unsigned short> >(unsigned short) [132]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_notequal_constants<unsigned short> >(unsigned short) [134]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_greaterthan_constants<unsigned short> >(unsigned short) [135]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_lessthan_constants<unsigned short> >(unsigned short) [133]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_greaterthanequal_constants<unsigned short> >(unsigned short) [136]
0.01 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_multiply2<signed char> >(signed char) [137]
0.01 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_add<short> >(short) [139]
0.01 0.00 200000/200000 void check_shifted_sum<double, custom_multiple_constant_mixed<double> >(double) [138]
0.01 0.00 1/1 void test_constant<int, custom_or_constants<int> >(int*, int, char const*) [140]
0.01 0.00 1/1 void test_constant<unsigned int, custom_or_constants<unsigned int> >(unsigned int*, int, char const*) [141]
0.01 0.00 1/1 void test_constant<unsigned long, custom_xor_constants<unsigned long> >(unsigned long*, int, char const*) [142]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_multiply_constants<unsigned short> >(unsigned short) [144]
0.01 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_divide_constants<unsigned short> >(unsigned short) [143]
0.01 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_and<short> >(short) [146]
0.01 0.00 200000/200000 void check_shifted_sum<short, custom_constant_or<short> >(short) [145]
0.00 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_two<signed char> >(signed char) [155]
0.00 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_divide_constants<signed char> >(signed char) [159]
0.00 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_mod_constants<signed char> >(signed char) [156]
0.00 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_equal_constants<signed char> >(signed char) [158]
0.00 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_greaterthan_constants<signed char> >(signed char) [160]
0.00 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_greaterthanequal_constants<signed char> >(signed char) [161]
0.00 0.00 2000000/2000000 void check_shifted_sum<signed char, custom_xor_constants<signed char> >(signed char) [157]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_two<unsigned char> >(unsigned char) [163]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_add_constants<unsigned char> >(unsigned char) [164]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_sub_constants<unsigned char> >(unsigned char) [167]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_multiply_constants<unsigned char> >(unsigned char) [172]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_divide_constants<unsigned char> >(unsigned char) [170]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_mod_constants<unsigned char> >(unsigned char) [166]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_equal_constants<unsigned char> >(unsigned char) [169]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_notequal_constants<unsigned char> >(unsigned char) [173]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_greaterthan_constants<unsigned char> >(unsigned char) [174]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_lessthan_constants<unsigned char> >(unsigned char) [171]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_greaterthanequal_constants<unsigned char> >(unsigned char) [175]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_and_constants<unsigned char> >(unsigned char) [165]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned char, custom_xor_constants<unsigned char> >(unsigned char) [168]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_add_constants<short> >(short) [177]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_sub_constants<short> >(short) [179]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_multiply_constants<short> >(short) [183]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_divide_constants<short> >(short) [182]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_equal_constants<short> >(short) [181]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_greaterthan_constants<short> >(short) [184]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_lessthanequal_constants<short> >(short) [185]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_and_constants<short> >(short) [178]
0.00 0.00 2000000/2000000 void check_shifted_sum<short, custom_xor_constants<short> >(short) [180]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_two<unsigned short> >(unsigned short) [186]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_add_constants<unsigned short> >(unsigned short) [187]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_sub_constants<unsigned short> >(unsigned short) [188]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned short, custom_equal_constants<unsigned short> >(unsigned short) [189]
0.00 0.00 2000000/2000000 void check_shifted_sum<unsigned int, custom_two<unsigned int> >(unsigned int) [176]
0.00 0.00 2000000/2000000 void check_shifted_sum<float, custom_two<float> >(float) [162]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_constant_add<signed char> >(signed char) [191]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_add<signed char> >(signed char) [198]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_constant_sub<signed char> >(signed char) [193]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_sub<signed char> >(signed char) [200]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_constant_multiply<signed char> >(signed char) [196]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_multiply<signed char> >(signed char) [204]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_constant_divide<signed char> >(signed char) [195]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_divide2<signed char> >(signed char) [203]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_mixed<signed char> >(signed char) [202]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_constant_and<signed char> >(signed char) [192]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_and<signed char> >(signed char) [199]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_constant_or<signed char> >(signed char) [190]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_or<signed char> >(signed char) [197]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_constant_xor<signed char> >(signed char) [194]
0.00 0.00 200000/200000 void check_shifted_sum<signed char, custom_multiple_constant_xor<signed char> >(signed char) [201]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_constant_add<unsigned char> >(unsigned char) [206]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char) [213]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_constant_sub<unsigned char> >(unsigned char) [208]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char) [215]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_constant_multiply<unsigned char> >(unsigned char) [211]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_multiply<unsigned char> >(unsigned char) [220]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char) [221]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_constant_divide<unsigned char> >(unsigned char) [210]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char) [218]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char) [219]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_mixed<unsigned char> >(unsigned char) [217]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_constant_and<unsigned char> >(unsigned char) [207]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char) [214]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_constant_or<unsigned char> >(unsigned char) [205]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char) [212]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_constant_xor<unsigned char> >(unsigned char) [209]
0.00 0.00 200000/200000 void check_shifted_sum<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char) [216]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_constant_add<short> >(short) [222]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_constant_sub<short> >(short) [224]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_sub<short> >(short) [229]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_constant_multiply<short> >(short) [227]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_multiply<short> >(short) [234]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_multiply2<short> >(short) [235]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_constant_divide<short> >(short) [226]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_divide<short> >(short) [232]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_divide2<short> >(short) [233]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_mixed<short> >(short) [231]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_constant_and<short> >(short) [223]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_or<short> >(short) [228]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_constant_xor<short> >(short) [225]
0.00 0.00 200000/200000 void check_shifted_sum<short, custom_multiple_constant_xor<short> >(short) [230]
0.00 0.00 110/110 start_timer() [236]
0.00 0.00 110/110 timer() [238]
0.00 0.00 110/110 record_result(double, char const*) [237]
0.00 0.00 20/20 summarize(char const*, int, int, int, int) [239]
0.00 0.00 1/1 void test_constant<unsigned short, custom_lessthanequal_constants<unsigned short> >(unsigned short*, int, char const*) [300]
0.00 0.00 1/1 void test_constant<unsigned short, custom_and_constants<unsigned short> >(unsigned short*, int, char const*) [298]
0.00 0.00 1/1 void test_constant<unsigned short, custom_or_constants<unsigned short> >(unsigned short*, int, char const*) [297]
0.00 0.00 1/1 void test_constant<unsigned short, custom_xor_constants<unsigned short> >(unsigned short*, int, char const*) [299]
0.00 0.00 1/1 void test_constant<int, custom_two<int> >(int*, int, char const*) [241]
0.00 0.00 1/1 void test_constant<int, custom_add_constants<int> >(int*, int, char const*) [242]
0.00 0.00 1/1 void test_constant<int, custom_sub_constants<int> >(int*, int, char const*) [245]
0.00 0.00 1/1 void test_constant<int, custom_multiply_constants<int> >(int*, int, char const*) [250]
0.00 0.00 1/1 void test_constant<int, custom_divide_constants<int> >(int*, int, char const*) [248]
0.00 0.00 1/1 void test_constant<int, custom_mod_constants<int> >(int*, int, char const*) [244]
0.00 0.00 1/1 void test_constant<int, custom_equal_constants<int> >(int*, int, char const*) [247]
0.00 0.00 1/1 void test_constant<int, custom_notequal_constants<int> >(int*, int, char const*) [251]
0.00 0.00 1/1 void test_constant<int, custom_greaterthan_constants<int> >(int*, int, char const*) [252]
0.00 0.00 1/1 void test_constant<int, custom_lessthan_constants<int> >(int*, int, char const*) [249]
0.00 0.00 1/1 void test_constant<int, custom_greaterthanequal_constants<int> >(int*, int, char const*) [254]
0.00 0.00 1/1 void test_constant<int, custom_lessthanequal_constants<int> >(int*, int, char const*) [253]
0.00 0.00 1/1 void test_constant<int, custom_and_constants<int> >(int*, int, char const*) [243]
0.00 0.00 1/1 void test_constant<int, custom_xor_constants<int> >(int*, int, char const*) [246]
0.00 0.00 1/1 void test_constant<unsigned int, custom_add_constants<unsigned int> >(unsigned int*, int, char const*) [255]
0.00 0.00 1/1 void test_constant<unsigned int, custom_sub_constants<unsigned int> >(unsigned int*, int, char const*) [258]
0.00 0.00 1/1 void test_constant<unsigned int, custom_multiply_constants<unsigned int> >(unsigned int*, int, char const*) [263]
0.00 0.00 1/1 void test_constant<unsigned int, custom_divide_constants<unsigned int> >(unsigned int*, int, char const*) [261]
0.00 0.00 1/1 void test_constant<unsigned int, custom_mod_constants<unsigned int> >(unsigned int*, int, char const*) [257]
0.00 0.00 1/1 void test_constant<unsigned int, custom_equal_constants<unsigned int> >(unsigned int*, int, char const*) [260]
0.00 0.00 1/1 void test_constant<unsigned int, custom_notequal_constants<unsigned int> >(unsigned int*, int, char const*) [264]
0.00 0.00 1/1 void test_constant<unsigned int, custom_greaterthan_constants<unsigned int> >(unsigned int*, int, char const*) [265]
0.00 0.00 1/1 void test_constant<unsigned int, custom_lessthan_constants<unsigned int> >(unsigned int*, int, char const*) [262]
0.00 0.00 1/1 void test_constant<unsigned int, custom_greaterthanequal_constants<unsigned int> >(unsigned int*, int, char const*) [267]
0.00 0.00 1/1 void test_constant<unsigned int, custom_lessthanequal_constants<unsigned int> >(unsigned int*, int, char const*) [266]
0.00 0.00 1/1 void test_constant<unsigned int, custom_and_constants<unsigned int> >(unsigned int*, int, char const*) [256]
0.00 0.00 1/1 void test_constant<unsigned int, custom_xor_constants<unsigned int> >(unsigned int*, int, char const*) [259]
0.00 0.00 1/1 void test_constant<long, custom_two<long> >(long*, int, char const*) [268]
0.00 0.00 1/1 void test_constant<long, custom_add_constants<long> >(long*, int, char const*) [270]
0.00 0.00 1/1 void test_constant<long, custom_sub_constants<long> >(long*, int, char const*) [273]
0.00 0.00 1/1 void test_constant<long, custom_multiply_constants<long> >(long*, int, char const*) [278]
0.00 0.00 1/1 void test_constant<long, custom_divide_constants<long> >(long*, int, char const*) [276]
0.00 0.00 1/1 void test_constant<long, custom_mod_constants<long> >(long*, int, char const*) [272]
0.00 0.00 1/1 void test_constant<long, custom_equal_constants<long> >(long*, int, char const*) [275]
0.00 0.00 1/1 void test_constant<long, custom_notequal_constants<long> >(long*, int, char const*) [279]
0.00 0.00 1/1 void test_constant<long, custom_greaterthan_constants<long> >(long*, int, char const*) [280]
0.00 0.00 1/1 void test_constant<long, custom_lessthan_constants<long> >(long*, int, char const*) [277]
0.00 0.00 1/1 void test_constant<long, custom_greaterthanequal_constants<long> >(long*, int, char const*) [282]
0.00 0.00 1/1 void test_constant<long, custom_lessthanequal_constants<long> >(long*, int, char const*) [281]
0.00 0.00 1/1 void test_constant<long, custom_and_constants<long> >(long*, int, char const*) [271]
0.00 0.00 1/1 void test_constant<long, custom_or_constants<long> >(long*, int, char const*) [269]
0.00 0.00 1/1 void test_constant<long, custom_xor_constants<long> >(long*, int, char const*) [274]
0.00 0.00 1/1 void test_constant<unsigned long, custom_two<unsigned long> >(unsigned long*, int, char const*) [283]
0.00 0.00 1/1 void test_constant<unsigned long, custom_add_constants<unsigned long> >(unsigned long*, int, char const*) [285]
0.00 0.00 1/1 void test_constant<unsigned long, custom_sub_constants<unsigned long> >(unsigned long*, int, char const*) [288]
0.00 0.00 1/1 void test_constant<unsigned long, custom_multiply_constants<unsigned long> >(unsigned long*, int, char const*) [292]
0.00 0.00 1/1 void test_constant<unsigned long, custom_divide_constants<unsigned long> >(unsigned long*, int, char const*) [290]
0.00 0.00 1/1 void test_constant<unsigned long, custom_mod_constants<unsigned long> >(unsigned long*, int, char const*) [287]
0.00 0.00 1/1 void test_constant<unsigned long, custom_equal_constants<unsigned long> >(unsigned long*, int, char const*) [289]
0.00 0.00 1/1 void test_constant<unsigned long, custom_notequal_constants<unsigned long> >(unsigned long*, int, char const*) [293]
0.00 0.00 1/1 void test_constant<unsigned long, custom_greaterthan_constants<unsigned long> >(unsigned long*, int, char const*) [294]
0.00 0.00 1/1 void test_constant<unsigned long, custom_lessthan_constants<unsigned long> >(unsigned long*, int, char const*) [291]
0.00 0.00 1/1 void test_constant<unsigned long, custom_greaterthanequal_constants<unsigned long> >(unsigned long*, int, char const*) [296]
0.00 0.00 1/1 void test_constant<unsigned long, custom_lessthanequal_constants<unsigned long> >(unsigned long*, int, char const*) [295]
0.00 0.00 1/1 void test_constant<unsigned long, custom_and_constants<unsigned long> >(unsigned long*, int, char const*) [286]
0.00 0.00 1/1 void test_constant<unsigned long, custom_or_constants<unsigned long> >(unsigned long*, int, char const*) [284]
-----------------------------------------------
37.80 0.00 1/1 main [1]
[2] 7.2 37.80 0.00 1 void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*) [2]
-----------------------------------------------
20.79 0.00 1/1 main [1]
[3] 4.0 20.79 0.00 1 void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*) [3]
-----------------------------------------------
18.88 0.00 1/1 main [1]
[4] 3.6 18.88 0.00 1 void test_constant<double, custom_constant_divide<double> >(double*, int, char const*) [4]
-----------------------------------------------
18.34 0.00 1/1 main [1]
[5] 3.5 18.34 0.00 1 void test_constant<double, custom_add_constants<double> >(double*, int, char const*) [5]
-----------------------------------------------
18.33 0.00 1/1 main [1]
[6] 3.5 18.33 0.00 1 void test_constant<float, custom_add_constants<float> >(float*, int, char const*) [6]
-----------------------------------------------
18.27 0.00 1/1 main [1]
[7] 3.5 18.27 0.00 1 void test_constant<float, custom_divide_constants<float> >(float*, int, char const*) [7]
-----------------------------------------------
18.27 0.00 1/1 main [1]
[8] 3.5 18.27 0.00 1 void test_constant<double, custom_multiply_constants<double> >(double*, int, char const*) [8]
-----------------------------------------------
18.27 0.00 1/1 main [1]
[9] 3.5 18.27 0.00 1 void test_constant<float, custom_sub_constants<float> >(float*, int, char const*) [9]
-----------------------------------------------
18.27 0.00 1/1 main [1]
[10] 3.5 18.27 0.00 1 void test_constant<float, custom_multiply_constants<float> >(float*, int, char const*) [10]
-----------------------------------------------
18.27 0.00 1/1 main [1]
[11] 3.5 18.27 0.00 1 void test_constant<double, custom_two<double> >(double*, int, char const*) [11]
-----------------------------------------------
18.27 0.00 1/1 main [1]
[12] 3.5 18.27 0.00 1 void test_constant<double, custom_sub_constants<double> >(double*, int, char const*) [12]
-----------------------------------------------
18.26 0.00 1/1 main [1]
[13] 3.5 18.26 0.00 1 void test_constant<double, custom_divide_constants<double> >(double*, int, char const*) [13]
-----------------------------------------------
10.42 0.00 1/1 main [1]
[14] 2.0 10.42 0.00 1 void test_constant<float, custom_constant_divide<float> >(float*, int, char const*) [14]
-----------------------------------------------
3.50 0.00 1/1 main [1]
[15] 0.7 3.50 0.00 1 void test_constant<int, custom_multiple_constant_divide<int> >(int*, int, char const*) [15]
-----------------------------------------------
3.43 0.00 1/1 main [1]
[16] 0.7 3.43 0.00 1 void test_constant<long, custom_multiple_constant_divide<long> >(long*, int, char const*) [16]
-----------------------------------------------
3.23 0.00 1/1 main [1]
[17] 0.6 3.23 0.00 1 void test_constant<int, custom_constant_divide<int> >(int*, int, char const*) [17]
-----------------------------------------------
3.21 0.00 1/1 main [1]
[18] 0.6 3.21 0.00 1 void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*) [18]
-----------------------------------------------
3.20 0.00 1/1 main [1]
[19] 0.6 3.20 0.00 1 void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*) [19]
-----------------------------------------------
3.10 0.00 1/1 main [1]
[20] 0.6 3.10 0.00 1 void test_constant<long, custom_constant_divide<long> >(long*, int, char const*) [20]
-----------------------------------------------
3.07 0.00 1/1 main [1]
[21] 0.6 3.07 0.00 1 void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*) [21]
-----------------------------------------------
3.06 0.00 1/1 main [1]
[22] 0.6 3.06 0.00 1 void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*) [22]
-----------------------------------------------
2.63 0.00 1/1 main [1]
[23] 0.5 2.63 0.00 1 void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*) [23]
-----------------------------------------------
2.52 0.00 1/1 main [1]
[24] 0.5 2.52 0.00 1 void test_constant<unsigned int, custom_constant_divide<unsigned int> >(unsigned int*, int, char const*) [24]
-----------------------------------------------
2.52 0.00 1/1 main [1]
[25] 0.5 2.52 0.00 1 void test_constant<unsigned int, custom_multiple_constant_divide<unsigned int> >(unsigned int*, int, char const*) [25]
-----------------------------------------------
2.46 0.00 1/1 main [1]
[26] 0.5 2.46 0.00 1 void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*) [26]
-----------------------------------------------
2.44 0.00 1/1 main [1]
[27] 0.5 2.44 0.00 1 void test_constant<unsigned long, custom_constant_divide<unsigned long> >(unsigned long*, int, char const*) [27]
-----------------------------------------------
2.43 0.00 1/1 main [1]
[28] 0.5 2.43 0.00 1 void test_constant<unsigned long, custom_multiple_constant_divide<unsigned long> >(unsigned long*, int, char const*) [28]
-----------------------------------------------
1.89 0.00 1/1 main [1]
[29] 0.4 1.89 0.00 1 void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*) [29]
-----------------------------------------------
1.88 0.00 1/1 main [1]
[30] 0.4 1.88 0.00 1 void test_constant<double, custom_constant_add<double> >(double*, int, char const*) [30]
-----------------------------------------------
1.88 0.00 1/1 main [1]
[31] 0.4 1.88 0.00 1 void test_constant<double, custom_constant_sub<double> >(double*, int, char const*) [31]
-----------------------------------------------
1.88 0.00 1/1 main [1]
[32] 0.4 1.88 0.00 1 void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*) [32]
-----------------------------------------------
1.85 0.00 1/1 main [1]
[33] 0.4 1.85 0.00 1 void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*) [33]
-----------------------------------------------
1.85 0.00 1/1 main [1]
[34] 0.4 1.85 0.00 1 void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*) [34]
-----------------------------------------------
1.85 0.00 1/1 main [1]
[35] 0.4 1.85 0.00 1 void test_constant<long, custom_multiple_constant_multiply<long> >(long*, int, char const*) [35]
-----------------------------------------------
1.85 0.00 1/1 main [1]
[36] 0.4 1.85 0.00 1 void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [36]
-----------------------------------------------
1.85 0.00 1/1 main [1]
[37] 0.4 1.85 0.00 1 void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [37]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[38] 0.4 1.84 0.00 1 void test_constant<float, custom_constant_sub<float> >(float*, int, char const*) [38]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[39] 0.4 1.84 0.00 1 void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*) [39]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[40] 0.4 1.84 0.00 1 void test_constant<long, custom_constant_multiply<long> >(long*, int, char const*) [40]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[41] 0.4 1.84 0.00 1 void test_constant<unsigned long, custom_constant_multiply<unsigned long> >(unsigned long*, int, char const*) [41]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[42] 0.3 1.83 0.00 1 void test_constant<float, custom_constant_add<float> >(float*, int, char const*) [42]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[43] 0.3 1.83 0.00 1 void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*) [43]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[44] 0.3 1.83 0.00 1 void test_constant<unsigned long, custom_multiple_constant_multiply<unsigned long> >(unsigned long*, int, char const*) [44]
-----------------------------------------------
1.82 0.00 1/1 main [1]
[45] 0.3 1.82 0.00 1 void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*) [45]
-----------------------------------------------
1.79 0.00 1/1 main [1]
[46] 0.3 1.79 0.00 1 void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*) [46]
-----------------------------------------------
1.78 0.00 1/1 main [1]
[47] 0.3 1.78 0.00 1 void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*) [47]
-----------------------------------------------
1.77 0.00 1/1 main [1]
[48] 0.3 1.77 0.00 1 void test_constant<int, custom_constant_multiply<int> >(int*, int, char const*) [48]
-----------------------------------------------
1.77 0.00 1/1 main [1]
[49] 0.3 1.77 0.00 1 void test_constant<unsigned int, custom_constant_multiply<unsigned int> >(unsigned int*, int, char const*) [49]
-----------------------------------------------
1.76 0.00 1/1 main [1]
[50] 0.3 1.76 0.00 1 void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*) [50]
-----------------------------------------------
1.76 0.00 1/1 main [1]
[51] 0.3 1.76 0.00 1 void test_constant<unsigned int, custom_multiple_constant_multiply<unsigned int> >(unsigned int*, int, char const*) [51]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[52] 0.3 1.43 0.00 1 void test_constant<long, custom_constant_and<long> >(long*, int, char const*) [52]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[53] 0.3 1.43 0.00 1 void test_constant<long, custom_constant_xor<long> >(long*, int, char const*) [53]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[54] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_constant_xor<unsigned long> >(unsigned long*, int, char const*) [54]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[55] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_multiple_constant_divide2<unsigned long> >(unsigned long*, int, char const*) [55]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[56] 0.3 1.43 0.00 1 void test_constant<long, custom_constant_or<long> >(long*, int, char const*) [56]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[57] 0.3 1.43 0.00 1 void test_constant<long, custom_constant_add<long> >(long*, int, char const*) [57]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[58] 0.3 1.43 0.00 1 void test_constant<long, custom_multiple_constant_add<long> >(long*, int, char const*) [58]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[59] 0.3 1.43 0.00 1 void test_constant<long, custom_multiple_constant_xor<long> >(long*, int, char const*) [59]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[60] 0.3 1.43 0.00 1 void test_constant<long, custom_multiple_constant_divide2<long> >(long*, int, char const*) [60]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[61] 0.3 1.43 0.00 1 void test_constant<long, custom_multiple_constant_multiply2<long> >(long*, int, char const*) [61]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[62] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_constant_and<unsigned long> >(unsigned long*, int, char const*) [62]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[63] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_multiple_constant_or<unsigned long> >(unsigned long*, int, char const*) [63]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[64] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_multiple_constant_add<unsigned long> >(unsigned long*, int, char const*) [64]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[65] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_multiple_constant_and<unsigned long> >(unsigned long*, int, char const*) [65]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[66] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_multiple_constant_multiply2<unsigned long> >(unsigned long*, int, char const*) [66]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[67] 0.3 1.43 0.00 1 void test_constant<long, custom_multiple_constant_sub<long> >(long*, int, char const*) [67]
-----------------------------------------------
1.43 0.00 1/1 main [1]
[68] 0.3 1.43 0.00 1 void test_constant<unsigned long, custom_constant_sub<unsigned long> >(unsigned long*, int, char const*) [68]
-----------------------------------------------
1.42 0.00 1/1 main [1]
[69] 0.3 1.42 0.00 1 void test_constant<long, custom_constant_sub<long> >(long*, int, char const*) [69]
-----------------------------------------------
1.42 0.00 1/1 main [1]
[70] 0.3 1.42 0.00 1 void test_constant<unsigned long, custom_multiple_constant_xor<unsigned long> >(unsigned long*, int, char const*) [70]
-----------------------------------------------
1.42 0.00 1/1 main [1]
[71] 0.3 1.42 0.00 1 void test_constant<long, custom_multiple_constant_or<long> >(long*, int, char const*) [71]
-----------------------------------------------
1.42 0.00 1/1 main [1]
[72] 0.3 1.42 0.00 1 void test_constant<long, custom_multiple_constant_and<long> >(long*, int, char const*) [72]
-----------------------------------------------
1.42 0.00 1/1 main [1]
[73] 0.3 1.42 0.00 1 void test_constant<unsigned long, custom_constant_or<unsigned long> >(unsigned long*, int, char const*) [73]
-----------------------------------------------
1.42 0.00 1/1 main [1]
[74] 0.3 1.42 0.00 1 void test_constant<unsigned long, custom_constant_add<unsigned long> >(unsigned long*, int, char const*) [74]
-----------------------------------------------
1.42 0.00 1/1 main [1]
[75] 0.3 1.42 0.00 1 void test_constant<unsigned long, custom_multiple_constant_sub<unsigned long> >(unsigned long*, int, char const*) [75]
-----------------------------------------------
1.40 0.00 1/1 main [1]
[76] 0.3 1.40 0.00 1 void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*) [76]
-----------------------------------------------
1.40 0.00 1/1 main [1]
[77] 0.3 1.40 0.00 1 void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*) [77]
-----------------------------------------------
1.39 0.00 1/1 main [1]
[78] 0.3 1.39 0.00 1 void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*) [78]
-----------------------------------------------
1.39 0.00 1/1 main [1]
[79] 0.3 1.39 0.00 1 void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*) [79]
-----------------------------------------------
1.39 0.00 1/1 main [1]
[80] 0.3 1.39 0.00 1 void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*) [80]
-----------------------------------------------
1.39 0.00 1/1 main [1]
[81] 0.3 1.39 0.00 1 void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*) [81]
-----------------------------------------------
1.39 0.00 1/1 main [1]
[82] 0.3 1.39 0.00 1 void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*) [82]
-----------------------------------------------
1.39 0.00 1/1 main [1]
[83] 0.3 1.39 0.00 1 void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*) [83]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[84] 0.3 1.38 0.00 1 void test_constant<int, custom_constant_or<int> >(int*, int, char const*) [84]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[85] 0.3 1.38 0.00 1 void test_constant<int, custom_constant_and<int> >(int*, int, char const*) [85]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[86] 0.3 1.38 0.00 1 void test_constant<int, custom_constant_sub<int> >(int*, int, char const*) [86]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[87] 0.3 1.38 0.00 1 void test_constant<int, custom_multiple_constant_xor<int> >(int*, int, char const*) [87]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[88] 0.3 1.38 0.00 1 void test_constant<unsigned int, custom_constant_sub<unsigned int> >(unsigned int*, int, char const*) [88]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[89] 0.3 1.38 0.00 1 void test_constant<unsigned int, custom_multiple_constant_or<unsigned int> >(unsigned int*, int, char const*) [89]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[90] 0.3 1.38 0.00 1 void test_constant<unsigned int, custom_multiple_constant_and<unsigned int> >(unsigned int*, int, char const*) [90]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[91] 0.3 1.38 0.00 1 void test_constant<unsigned int, custom_multiple_constant_xor<unsigned int> >(unsigned int*, int, char const*) [91]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[92] 0.3 1.38 0.00 1 void test_constant<unsigned int, custom_multiple_constant_multiply2<unsigned int> >(unsigned int*, int, char const*) [92]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[93] 0.3 1.38 0.00 1 void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*) [93]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[94] 0.3 1.38 0.00 1 void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*) [94]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[95] 0.3 1.38 0.00 1 void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*) [95]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[96] 0.3 1.38 0.00 1 void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*) [96]
-----------------------------------------------
1.38 0.00 1/1 main [1]
[97] 0.3 1.38 0.00 1 void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*) [97]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[98] 0.3 1.37 0.00 1 void test_constant<int, custom_constant_add<int> >(int*, int, char const*) [98]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[99] 0.3 1.37 0.00 1 void test_constant<int, custom_constant_xor<int> >(int*, int, char const*) [99]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[100] 0.3 1.37 0.00 1 void test_constant<int, custom_multiple_constant_or<int> >(int*, int, char const*) [100]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[101] 0.3 1.37 0.00 1 void test_constant<int, custom_multiple_constant_add<int> >(int*, int, char const*) [101]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[102] 0.3 1.37 0.00 1 void test_constant<unsigned int, custom_constant_or<unsigned int> >(unsigned int*, int, char const*) [102]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[103] 0.3 1.37 0.00 1 void test_constant<unsigned int, custom_constant_add<unsigned int> >(unsigned int*, int, char const*) [103]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[104] 0.3 1.37 0.00 1 void test_constant<unsigned int, custom_multiple_constant_add<unsigned int> >(unsigned int*, int, char const*) [104]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[105] 0.3 1.37 0.00 1 void test_constant<unsigned int, custom_multiple_constant_sub<unsigned int> >(unsigned int*, int, char const*) [105]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[106] 0.3 1.37 0.00 1 void test_constant<unsigned int, custom_multiple_constant_divide2<unsigned int> >(unsigned int*, int, char const*) [106]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[107] 0.3 1.37 0.00 1 void test_constant<int, custom_multiple_constant_and<int> >(int*, int, char const*) [107]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[108] 0.3 1.37 0.00 1 void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*) [108]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[109] 0.3 1.37 0.00 1 void test_constant<int, custom_multiple_constant_divide2<int> >(int*, int, char const*) [109]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[110] 0.3 1.37 0.00 1 void test_constant<unsigned int, custom_constant_and<unsigned int> >(unsigned int*, int, char const*) [110]
-----------------------------------------------
1.37 0.00 1/1 main [1]
[111] 0.3 1.37 0.00 1 void test_constant<unsigned int, custom_constant_xor<unsigned int> >(unsigned int*, int, char const*) [111]
-----------------------------------------------
1.23 0.00 1/1 main [1]
[112] 0.2 1.23 0.00 1 void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*) [112]
-----------------------------------------------
1.22 0.00 1/1 main [1]
[113] 0.2 1.22 0.00 1 void test_constant<long, custom_multiple_constant_mixed<long> >(long*, int, char const*) [113]
-----------------------------------------------
1.22 0.00 1/1 main [1]
[114] 0.2 1.22 0.00 1 void test_constant<int, custom_multiple_constant_mixed<int> >(int*, int, char const*) [114]
-----------------------------------------------
1.22 0.00 1/1 main [1]
[115] 0.2 1.22 0.00 1 void test_constant<unsigned int, custom_multiple_constant_mixed<unsigned int> >(unsigned int*, int, char const*) [115]
-----------------------------------------------
1.22 0.00 1/1 main [1]
[116] 0.2 1.22 0.00 1 void test_constant<unsigned long, custom_multiple_constant_mixed<unsigned long> >(unsigned long*, int, char const*) [116]
-----------------------------------------------
0.02 0.00 2000000/2000000 main [1]
[117] 0.0 0.02 0.00 2000000 void check_shifted_sum<short, custom_notequal_constants<short> >(short) [117]
-----------------------------------------------
0.02 0.00 200000/200000 main [1]
[118] 0.0 0.02 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_divide<signed char> >(signed char) [118]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[119] 0.0 0.01 0.00 2000000 void check_shifted_sum<signed char, custom_or_constants<signed char> >(signed char) [119]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[120] 0.0 0.01 0.00 2000000 void check_shifted_sum<signed char, custom_and_constants<signed char> >(signed char) [120]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[121] 0.0 0.01 0.00 2000000 void check_shifted_sum<signed char, custom_lessthan_constants<signed char> >(signed char) [121]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[122] 0.0 0.01 0.00 2000000 void check_shifted_sum<signed char, custom_multiply_constants<signed char> >(signed char) [122]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[123] 0.0 0.01 0.00 2000000 void check_shifted_sum<signed char, custom_notequal_constants<signed char> >(signed char) [123]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[124] 0.0 0.01 0.00 2000000 void check_shifted_sum<signed char, custom_lessthanequal_constants<signed char> >(signed char) [124]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[125] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned char, custom_or_constants<unsigned char> >(unsigned char) [125]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[126] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned char, custom_lessthanequal_constants<unsigned char> >(unsigned char) [126]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[127] 0.0 0.01 0.00 2000000 void check_shifted_sum<short, custom_two<short> >(short) [127]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[128] 0.0 0.01 0.00 2000000 void check_shifted_sum<short, custom_or_constants<short> >(short) [128]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[129] 0.0 0.01 0.00 2000000 void check_shifted_sum<short, custom_mod_constants<short> >(short) [129]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[130] 0.0 0.01 0.00 2000000 void check_shifted_sum<short, custom_lessthan_constants<short> >(short) [130]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[131] 0.0 0.01 0.00 2000000 void check_shifted_sum<short, custom_greaterthanequal_constants<short> >(short) [131]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[132] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned short, custom_mod_constants<unsigned short> >(unsigned short) [132]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[133] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned short, custom_lessthan_constants<unsigned short> >(unsigned short) [133]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[134] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned short, custom_notequal_constants<unsigned short> >(unsigned short) [134]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[135] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned short, custom_greaterthan_constants<unsigned short> >(unsigned short) [135]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[136] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned short, custom_greaterthanequal_constants<unsigned short> >(unsigned short) [136]
-----------------------------------------------
0.01 0.00 200000/200000 main [1]
[137] 0.0 0.01 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_multiply2<signed char> >(signed char) [137]
-----------------------------------------------
0.01 0.00 200000/200000 main [1]
[138] 0.0 0.01 0.00 200000 void check_shifted_sum<double, custom_multiple_constant_mixed<double> >(double) [138]
-----------------------------------------------
0.01 0.00 200000/200000 main [1]
[139] 0.0 0.01 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_add<short> >(short) [139]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[140] 0.0 0.01 0.00 1 void test_constant<int, custom_or_constants<int> >(int*, int, char const*) [140]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[141] 0.0 0.01 0.00 1 void test_constant<unsigned int, custom_or_constants<unsigned int> >(unsigned int*, int, char const*) [141]
-----------------------------------------------
0.01 0.00 1/1 main [1]
[142] 0.0 0.01 0.00 1 void test_constant<unsigned long, custom_xor_constants<unsigned long> >(unsigned long*, int, char const*) [142]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[143] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned short, custom_divide_constants<unsigned short> >(unsigned short) [143]
-----------------------------------------------
0.01 0.00 2000000/2000000 main [1]
[144] 0.0 0.01 0.00 2000000 void check_shifted_sum<unsigned short, custom_multiply_constants<unsigned short> >(unsigned short) [144]
-----------------------------------------------
0.01 0.00 200000/200000 main [1]
[145] 0.0 0.01 0.00 200000 void check_shifted_sum<short, custom_constant_or<short> >(short) [145]
-----------------------------------------------
0.01 0.00 200000/200000 main [1]
[146] 0.0 0.01 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_and<short> >(short) [146]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[155] 0.0 0.00 0.00 2000000 void check_shifted_sum<signed char, custom_two<signed char> >(signed char) [155]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[156] 0.0 0.00 0.00 2000000 void check_shifted_sum<signed char, custom_mod_constants<signed char> >(signed char) [156]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[157] 0.0 0.00 0.00 2000000 void check_shifted_sum<signed char, custom_xor_constants<signed char> >(signed char) [157]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[158] 0.0 0.00 0.00 2000000 void check_shifted_sum<signed char, custom_equal_constants<signed char> >(signed char) [158]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[159] 0.0 0.00 0.00 2000000 void check_shifted_sum<signed char, custom_divide_constants<signed char> >(signed char) [159]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[160] 0.0 0.00 0.00 2000000 void check_shifted_sum<signed char, custom_greaterthan_constants<signed char> >(signed char) [160]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[161] 0.0 0.00 0.00 2000000 void check_shifted_sum<signed char, custom_greaterthanequal_constants<signed char> >(signed char) [161]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[162] 0.0 0.00 0.00 2000000 void check_shifted_sum<float, custom_two<float> >(float) [162]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[163] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_two<unsigned char> >(unsigned char) [163]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[164] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_add_constants<unsigned char> >(unsigned char) [164]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[165] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_and_constants<unsigned char> >(unsigned char) [165]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[166] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_mod_constants<unsigned char> >(unsigned char) [166]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[167] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_sub_constants<unsigned char> >(unsigned char) [167]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[168] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_xor_constants<unsigned char> >(unsigned char) [168]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[169] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_equal_constants<unsigned char> >(unsigned char) [169]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[170] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_divide_constants<unsigned char> >(unsigned char) [170]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[171] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_lessthan_constants<unsigned char> >(unsigned char) [171]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[172] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_multiply_constants<unsigned char> >(unsigned char) [172]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[173] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_notequal_constants<unsigned char> >(unsigned char) [173]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[174] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_greaterthan_constants<unsigned char> >(unsigned char) [174]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[175] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned char, custom_greaterthanequal_constants<unsigned char> >(unsigned char) [175]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[176] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned int, custom_two<unsigned int> >(unsigned int) [176]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[177] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_add_constants<short> >(short) [177]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[178] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_and_constants<short> >(short) [178]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[179] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_sub_constants<short> >(short) [179]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[180] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_xor_constants<short> >(short) [180]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[181] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_equal_constants<short> >(short) [181]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[182] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_divide_constants<short> >(short) [182]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[183] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_multiply_constants<short> >(short) [183]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[184] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_greaterthan_constants<short> >(short) [184]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[185] 0.0 0.00 0.00 2000000 void check_shifted_sum<short, custom_lessthanequal_constants<short> >(short) [185]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[186] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned short, custom_two<unsigned short> >(unsigned short) [186]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[187] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned short, custom_add_constants<unsigned short> >(unsigned short) [187]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[188] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned short, custom_sub_constants<unsigned short> >(unsigned short) [188]
-----------------------------------------------
0.00 0.00 2000000/2000000 main [1]
[189] 0.0 0.00 0.00 2000000 void check_shifted_sum<unsigned short, custom_equal_constants<unsigned short> >(unsigned short) [189]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[190] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_constant_or<signed char> >(signed char) [190]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[191] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_constant_add<signed char> >(signed char) [191]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[192] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_constant_and<signed char> >(signed char) [192]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[193] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_constant_sub<signed char> >(signed char) [193]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[194] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_constant_xor<signed char> >(signed char) [194]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[195] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_constant_divide<signed char> >(signed char) [195]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[196] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_constant_multiply<signed char> >(signed char) [196]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[197] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_or<signed char> >(signed char) [197]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[198] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_add<signed char> >(signed char) [198]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[199] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_and<signed char> >(signed char) [199]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[200] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_sub<signed char> >(signed char) [200]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[201] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_xor<signed char> >(signed char) [201]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[202] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_mixed<signed char> >(signed char) [202]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[203] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_divide2<signed char> >(signed char) [203]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[204] 0.0 0.00 0.00 200000 void check_shifted_sum<signed char, custom_multiple_constant_multiply<signed char> >(signed char) [204]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[205] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_constant_or<unsigned char> >(unsigned char) [205]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[206] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_constant_add<unsigned char> >(unsigned char) [206]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[207] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_constant_and<unsigned char> >(unsigned char) [207]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[208] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_constant_sub<unsigned char> >(unsigned char) [208]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[209] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_constant_xor<unsigned char> >(unsigned char) [209]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[210] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_constant_divide<unsigned char> >(unsigned char) [210]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[211] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_constant_multiply<unsigned char> >(unsigned char) [211]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[212] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char) [212]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[213] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char) [213]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[214] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char) [214]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[215] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char) [215]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[216] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char) [216]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[217] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_mixed<unsigned char> >(unsigned char) [217]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[218] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char) [218]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[219] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char) [219]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[220] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_multiply<unsigned char> >(unsigned char) [220]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[221] 0.0 0.00 0.00 200000 void check_shifted_sum<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char) [221]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[222] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_constant_add<short> >(short) [222]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[223] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_constant_and<short> >(short) [223]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[224] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_constant_sub<short> >(short) [224]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[225] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_constant_xor<short> >(short) [225]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[226] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_constant_divide<short> >(short) [226]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[227] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_constant_multiply<short> >(short) [227]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[228] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_or<short> >(short) [228]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[229] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_sub<short> >(short) [229]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[230] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_xor<short> >(short) [230]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[231] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_mixed<short> >(short) [231]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[232] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_divide<short> >(short) [232]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[233] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_divide2<short> >(short) [233]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[234] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_multiply<short> >(short) [234]
-----------------------------------------------
0.00 0.00 200000/200000 main [1]
[235] 0.0 0.00 0.00 200000 void check_shifted_sum<short, custom_multiple_constant_multiply2<short> >(short) [235]
-----------------------------------------------
0.00 0.00 110/110 main [1]
[236] 0.0 0.00 0.00 110 start_timer() [236]
-----------------------------------------------
0.00 0.00 110/110 main [1]
[237] 0.0 0.00 0.00 110 record_result(double, char const*) [237]
-----------------------------------------------
0.00 0.00 110/110 main [1]
[238] 0.0 0.00 0.00 110 timer() [238]
-----------------------------------------------
0.00 0.00 20/20 main [1]
[239] 0.0 0.00 0.00 20 summarize(char const*, int, int, int, int) [239]
-----------------------------------------------
0.00 0.00 1/1 __do_global_ctors_aux [303]
[240] 0.0 0.00 0.00 1 global constructors keyed to results [240]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[241] 0.0 0.00 0.00 1 void test_constant<int, custom_two<int> >(int*, int, char const*) [241]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[242] 0.0 0.00 0.00 1 void test_constant<int, custom_add_constants<int> >(int*, int, char const*) [242]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[243] 0.0 0.00 0.00 1 void test_constant<int, custom_and_constants<int> >(int*, int, char const*) [243]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[244] 0.0 0.00 0.00 1 void test_constant<int, custom_mod_constants<int> >(int*, int, char const*) [244]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[245] 0.0 0.00 0.00 1 void test_constant<int, custom_sub_constants<int> >(int*, int, char const*) [245]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[246] 0.0 0.00 0.00 1 void test_constant<int, custom_xor_constants<int> >(int*, int, char const*) [246]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[247] 0.0 0.00 0.00 1 void test_constant<int, custom_equal_constants<int> >(int*, int, char const*) [247]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[248] 0.0 0.00 0.00 1 void test_constant<int, custom_divide_constants<int> >(int*, int, char const*) [248]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[249] 0.0 0.00 0.00 1 void test_constant<int, custom_lessthan_constants<int> >(int*, int, char const*) [249]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[250] 0.0 0.00 0.00 1 void test_constant<int, custom_multiply_constants<int> >(int*, int, char const*) [250]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[251] 0.0 0.00 0.00 1 void test_constant<int, custom_notequal_constants<int> >(int*, int, char const*) [251]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[252] 0.0 0.00 0.00 1 void test_constant<int, custom_greaterthan_constants<int> >(int*, int, char const*) [252]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[253] 0.0 0.00 0.00 1 void test_constant<int, custom_lessthanequal_constants<int> >(int*, int, char const*) [253]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[254] 0.0 0.00 0.00 1 void test_constant<int, custom_greaterthanequal_constants<int> >(int*, int, char const*) [254]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[255] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_add_constants<unsigned int> >(unsigned int*, int, char const*) [255]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[256] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_and_constants<unsigned int> >(unsigned int*, int, char const*) [256]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[257] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_mod_constants<unsigned int> >(unsigned int*, int, char const*) [257]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[258] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_sub_constants<unsigned int> >(unsigned int*, int, char const*) [258]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[259] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_xor_constants<unsigned int> >(unsigned int*, int, char const*) [259]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[260] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_equal_constants<unsigned int> >(unsigned int*, int, char const*) [260]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[261] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_divide_constants<unsigned int> >(unsigned int*, int, char const*) [261]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[262] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_lessthan_constants<unsigned int> >(unsigned int*, int, char const*) [262]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[263] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_multiply_constants<unsigned int> >(unsigned int*, int, char const*) [263]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[264] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_notequal_constants<unsigned int> >(unsigned int*, int, char const*) [264]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[265] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_greaterthan_constants<unsigned int> >(unsigned int*, int, char const*) [265]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[266] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_lessthanequal_constants<unsigned int> >(unsigned int*, int, char const*) [266]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[267] 0.0 0.00 0.00 1 void test_constant<unsigned int, custom_greaterthanequal_constants<unsigned int> >(unsigned int*, int, char const*) [267]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[268] 0.0 0.00 0.00 1 void test_constant<long, custom_two<long> >(long*, int, char const*) [268]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[269] 0.0 0.00 0.00 1 void test_constant<long, custom_or_constants<long> >(long*, int, char const*) [269]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[270] 0.0 0.00 0.00 1 void test_constant<long, custom_add_constants<long> >(long*, int, char const*) [270]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[271] 0.0 0.00 0.00 1 void test_constant<long, custom_and_constants<long> >(long*, int, char const*) [271]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[272] 0.0 0.00 0.00 1 void test_constant<long, custom_mod_constants<long> >(long*, int, char const*) [272]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[273] 0.0 0.00 0.00 1 void test_constant<long, custom_sub_constants<long> >(long*, int, char const*) [273]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[274] 0.0 0.00 0.00 1 void test_constant<long, custom_xor_constants<long> >(long*, int, char const*) [274]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[275] 0.0 0.00 0.00 1 void test_constant<long, custom_equal_constants<long> >(long*, int, char const*) [275]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[276] 0.0 0.00 0.00 1 void test_constant<long, custom_divide_constants<long> >(long*, int, char const*) [276]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[277] 0.0 0.00 0.00 1 void test_constant<long, custom_lessthan_constants<long> >(long*, int, char const*) [277]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[278] 0.0 0.00 0.00 1 void test_constant<long, custom_multiply_constants<long> >(long*, int, char const*) [278]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[279] 0.0 0.00 0.00 1 void test_constant<long, custom_notequal_constants<long> >(long*, int, char const*) [279]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[280] 0.0 0.00 0.00 1 void test_constant<long, custom_greaterthan_constants<long> >(long*, int, char const*) [280]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[281] 0.0 0.00 0.00 1 void test_constant<long, custom_lessthanequal_constants<long> >(long*, int, char const*) [281]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[282] 0.0 0.00 0.00 1 void test_constant<long, custom_greaterthanequal_constants<long> >(long*, int, char const*) [282]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[283] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_two<unsigned long> >(unsigned long*, int, char const*) [283]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[284] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_or_constants<unsigned long> >(unsigned long*, int, char const*) [284]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[285] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_add_constants<unsigned long> >(unsigned long*, int, char const*) [285]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[286] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_and_constants<unsigned long> >(unsigned long*, int, char const*) [286]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[287] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_mod_constants<unsigned long> >(unsigned long*, int, char const*) [287]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[288] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_sub_constants<unsigned long> >(unsigned long*, int, char const*) [288]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[289] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_equal_constants<unsigned long> >(unsigned long*, int, char const*) [289]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[290] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_divide_constants<unsigned long> >(unsigned long*, int, char const*) [290]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[291] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_lessthan_constants<unsigned long> >(unsigned long*, int, char const*) [291]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[292] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_multiply_constants<unsigned long> >(unsigned long*, int, char const*) [292]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[293] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_notequal_constants<unsigned long> >(unsigned long*, int, char const*) [293]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[294] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_greaterthan_constants<unsigned long> >(unsigned long*, int, char const*) [294]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[295] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_lessthanequal_constants<unsigned long> >(unsigned long*, int, char const*) [295]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[296] 0.0 0.00 0.00 1 void test_constant<unsigned long, custom_greaterthanequal_constants<unsigned long> >(unsigned long*, int, char const*) [296]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[297] 0.0 0.00 0.00 1 void test_constant<unsigned short, custom_or_constants<unsigned short> >(unsigned short*, int, char const*) [297]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[298] 0.0 0.00 0.00 1 void test_constant<unsigned short, custom_and_constants<unsigned short> >(unsigned short*, int, char const*) [298]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[299] 0.0 0.00 0.00 1 void test_constant<unsigned short, custom_xor_constants<unsigned short> >(unsigned short*, int, char const*) [299]
-----------------------------------------------
0.00 0.00 1/1 main [1]
[300] 0.0 0.00 0.00 1 void test_constant<unsigned short, custom_lessthanequal_constants<unsigned short> >(unsigned short*, int, char const*) [300]
-----------------------------------------------
0.00 0.00 1/1 __do_global_ctors_aux [303]
[301] 0.0 0.00 0.00 1 __static_initialization_and_destruction_0(int, int) [301]
-----------------------------------------------
This table describes the call tree of the program, and was sorted by
the total amount of time spent in each function and its children.
Each entry in this table consists of several lines. The line with the
index number at the left hand margin lists the current function.
The lines above it list the functions that called this function,
and the lines below it list the functions this one called.
This line lists:
index A unique number given to each element of the table.
Index numbers are sorted numerically.
The index number is printed next to every function name so
it is easier to look up where the function in the table.
% time This is the percentage of the `total' time that was spent
in this function and its children. Note that due to
different viewpoints, functions excluded by options, etc,
these numbers will NOT add up to 100%.
self This is the total amount of time spent in this function.
children This is the total amount of time propagated into this
function by its children.
called This is the number of times the function was called.
If the function called itself recursively, the number
only includes non-recursive calls, and is followed by
a `+' and the number of recursive calls.
name The name of the current function. The index number is
printed after it. If the function is a member of a
cycle, the cycle number is printed between the
function's name and the index number.
For the function's parents, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the function into this parent.
children This is the amount of time that was propagated from
the function's children into this parent.
called This is the number of times this parent called the
function `/' the total number of times the function
was called. Recursive calls to the function are not
included in the number after the `/'.
name This is the name of the parent. The parent's index
number is printed after it. If the parent is a
member of a cycle, the cycle number is printed between
the name and the index number.
If the parents of the function cannot be determined, the word
`<spontaneous>' is printed in the `name' field, and all the other
fields are blank.
For the function's children, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the child into the function.
children This is the amount of time that was propagated from the
child's children to the function.
called This is the number of times the function called
this child `/' the total number of times the child
was called. Recursive calls by the child are not
listed in the number after the `/'.
name This is the name of the child. The child's index
number is printed after it. If the child is a
member of a cycle, the cycle number is printed
between the name and the index number.
If there are any cycles (circles) in the call graph, there is an
entry for the cycle-as-a-whole. This entry shows who called the
cycle (as parents) and the members of the cycle (as children.)
The `+' recursive calls entry shows the number of function calls that
were internal to the cycle, and the calls entry for each member shows,
for that member, how many times it was called from other members of
the cycle.
\f
Index by function name
[240] global constructors keyed to results (simple_types_constant_folding.cpp) [57] void test_constant<long, custom_constant_add<long> >(long*, int, char const*) [122] void check_shifted_sum<signed char, custom_multiply_constants<signed char> >(signed char)
[236] start_timer() [52] void test_constant<long, custom_constant_and<long> >(long*, int, char const*) [123] void check_shifted_sum<signed char, custom_notequal_constants<signed char> >(signed char)
[237] record_result(double, char const*) [69] void test_constant<long, custom_constant_sub<long> >(long*, int, char const*) [197] void check_shifted_sum<signed char, custom_multiple_constant_or<signed char> >(signed char)
[11] void test_constant<double, custom_two<double> >(double*, int, char const*) [53] void test_constant<long, custom_constant_xor<long> >(long*, int, char const*) [160] void check_shifted_sum<signed char, custom_greaterthan_constants<signed char> >(signed char)
[30] void test_constant<double, custom_constant_add<double> >(double*, int, char const*) [269] void test_constant<long, custom_or_constants<long> >(long*, int, char const*) [198] void check_shifted_sum<signed char, custom_multiple_constant_add<signed char> >(signed char)
[31] void test_constant<double, custom_constant_sub<double> >(double*, int, char const*) [270] void test_constant<long, custom_add_constants<long> >(long*, int, char const*) [199] void check_shifted_sum<signed char, custom_multiple_constant_and<signed char> >(signed char)
[5] void test_constant<double, custom_add_constants<double> >(double*, int, char const*) [271] void test_constant<long, custom_and_constants<long> >(long*, int, char const*) [200] void check_shifted_sum<signed char, custom_multiple_constant_sub<signed char> >(signed char)
[12] void test_constant<double, custom_sub_constants<double> >(double*, int, char const*) [272] void test_constant<long, custom_mod_constants<long> >(long*, int, char const*) [201] void check_shifted_sum<signed char, custom_multiple_constant_xor<signed char> >(signed char)
[4] void test_constant<double, custom_constant_divide<double> >(double*, int, char const*) [273] void test_constant<long, custom_sub_constants<long> >(long*, int, char const*) [124] void check_shifted_sum<signed char, custom_lessthanequal_constants<signed char> >(signed char)
[13] void test_constant<double, custom_divide_constants<double> >(double*, int, char const*) [274] void test_constant<long, custom_xor_constants<long> >(long*, int, char const*) [202] void check_shifted_sum<signed char, custom_multiple_constant_mixed<signed char> >(signed char)
[33] void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*) [20] void test_constant<long, custom_constant_divide<long> >(long*, int, char const*) [118] void check_shifted_sum<signed char, custom_multiple_constant_divide<signed char> >(signed char)
[8] void test_constant<double, custom_multiply_constants<double> >(double*, int, char const*) [275] void test_constant<long, custom_equal_constants<long> >(long*, int, char const*) [203] void check_shifted_sum<signed char, custom_multiple_constant_divide2<signed char> >(signed char)
[19] void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*) [276] void test_constant<long, custom_divide_constants<long> >(long*, int, char const*) [161] void check_shifted_sum<signed char, custom_greaterthanequal_constants<signed char> >(signed char)
[18] void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*) [40] void test_constant<long, custom_constant_multiply<long> >(long*, int, char const*) [204] void check_shifted_sum<signed char, custom_multiple_constant_multiply<signed char> >(signed char)
[2] void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*) [277] void test_constant<long, custom_lessthan_constants<long> >(long*, int, char const*) [137] void check_shifted_sum<signed char, custom_multiple_constant_multiply2<signed char> >(signed char)
[32] void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*) [278] void test_constant<long, custom_multiply_constants<long> >(long*, int, char const*) [138] void check_shifted_sum<double, custom_multiple_constant_mixed<double> >(double)
[23] void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*) [279] void test_constant<long, custom_notequal_constants<long> >(long*, int, char const*) [162] void check_shifted_sum<float, custom_two<float> >(float)
[29] void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*) [71] void test_constant<long, custom_multiple_constant_or<long> >(long*, int, char const*) [163] void check_shifted_sum<unsigned char, custom_two<unsigned char> >(unsigned char)
[42] void test_constant<float, custom_constant_add<float> >(float*, int, char const*) [280] void test_constant<long, custom_greaterthan_constants<long> >(long*, int, char const*) [205] void check_shifted_sum<unsigned char, custom_constant_or<unsigned char> >(unsigned char)
[38] void test_constant<float, custom_constant_sub<float> >(float*, int, char const*) [58] void test_constant<long, custom_multiple_constant_add<long> >(long*, int, char const*) [206] void check_shifted_sum<unsigned char, custom_constant_add<unsigned char> >(unsigned char)
[6] void test_constant<float, custom_add_constants<float> >(float*, int, char const*) [72] void test_constant<long, custom_multiple_constant_and<long> >(long*, int, char const*) [207] void check_shifted_sum<unsigned char, custom_constant_and<unsigned char> >(unsigned char)
[9] void test_constant<float, custom_sub_constants<float> >(float*, int, char const*) [67] void test_constant<long, custom_multiple_constant_sub<long> >(long*, int, char const*) [208] void check_shifted_sum<unsigned char, custom_constant_sub<unsigned char> >(unsigned char)
[14] void test_constant<float, custom_constant_divide<float> >(float*, int, char const*) [59] void test_constant<long, custom_multiple_constant_xor<long> >(long*, int, char const*) [209] void check_shifted_sum<unsigned char, custom_constant_xor<unsigned char> >(unsigned char)
[7] void test_constant<float, custom_divide_constants<float> >(float*, int, char const*) [281] void test_constant<long, custom_lessthanequal_constants<long> >(long*, int, char const*) [125] void check_shifted_sum<unsigned char, custom_or_constants<unsigned char> >(unsigned char)
[34] void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*) [113] void test_constant<long, custom_multiple_constant_mixed<long> >(long*, int, char const*) [164] void check_shifted_sum<unsigned char, custom_add_constants<unsigned char> >(unsigned char)
[10] void test_constant<float, custom_multiply_constants<float> >(float*, int, char const*) [16] void test_constant<long, custom_multiple_constant_divide<long> >(long*, int, char const*) [165] void check_shifted_sum<unsigned char, custom_and_constants<unsigned char> >(unsigned char)
[22] void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*) [60] void test_constant<long, custom_multiple_constant_divide2<long> >(long*, int, char const*) [166] void check_shifted_sum<unsigned char, custom_mod_constants<unsigned char> >(unsigned char)
[21] void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*) [282] void test_constant<long, custom_greaterthanequal_constants<long> >(long*, int, char const*) [167] void check_shifted_sum<unsigned char, custom_sub_constants<unsigned char> >(unsigned char)
[39] void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*) [35] void test_constant<long, custom_multiple_constant_multiply<long> >(long*, int, char const*) [168] void check_shifted_sum<unsigned char, custom_xor_constants<unsigned char> >(unsigned char)
[3] void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*) [61] void test_constant<long, custom_multiple_constant_multiply2<long> >(long*, int, char const*) [210] void check_shifted_sum<unsigned char, custom_constant_divide<unsigned char> >(unsigned char)
[45] void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*) [283] void test_constant<unsigned long, custom_two<unsigned long> >(unsigned long*, int, char const*) [169] void check_shifted_sum<unsigned char, custom_equal_constants<unsigned char> >(unsigned char)
[26] void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*) [73] void test_constant<unsigned long, custom_constant_or<unsigned long> >(unsigned long*, int, char const*) [170] void check_shifted_sum<unsigned char, custom_divide_constants<unsigned char> >(unsigned char)
[43] void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*) [74] void test_constant<unsigned long, custom_constant_add<unsigned long> >(unsigned long*, int, char const*) [211] void check_shifted_sum<unsigned char, custom_constant_multiply<unsigned char> >(unsigned char)
[241] void test_constant<int, custom_two<int> >(int*, int, char const*) [62] void test_constant<unsigned long, custom_constant_and<unsigned long> >(unsigned long*, int, char const*) [171] void check_shifted_sum<unsigned char, custom_lessthan_constants<unsigned char> >(unsigned char)
[84] void test_constant<int, custom_constant_or<int> >(int*, int, char const*) [68] void test_constant<unsigned long, custom_constant_sub<unsigned long> >(unsigned long*, int, char const*) [172] void check_shifted_sum<unsigned char, custom_multiply_constants<unsigned char> >(unsigned char)
[98] void test_constant<int, custom_constant_add<int> >(int*, int, char const*) [54] void test_constant<unsigned long, custom_constant_xor<unsigned long> >(unsigned long*, int, char const*) [173] void check_shifted_sum<unsigned char, custom_notequal_constants<unsigned char> >(unsigned char)
[85] void test_constant<int, custom_constant_and<int> >(int*, int, char const*) [284] void test_constant<unsigned long, custom_or_constants<unsigned long> >(unsigned long*, int, char const*) [212] void check_shifted_sum<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char)
[86] void test_constant<int, custom_constant_sub<int> >(int*, int, char const*) [285] void test_constant<unsigned long, custom_add_constants<unsigned long> >(unsigned long*, int, char const*) [174] void check_shifted_sum<unsigned char, custom_greaterthan_constants<unsigned char> >(unsigned char)
[99] void test_constant<int, custom_constant_xor<int> >(int*, int, char const*) [286] void test_constant<unsigned long, custom_and_constants<unsigned long> >(unsigned long*, int, char const*) [213] void check_shifted_sum<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char)
[140] void test_constant<int, custom_or_constants<int> >(int*, int, char const*) [287] void test_constant<unsigned long, custom_mod_constants<unsigned long> >(unsigned long*, int, char const*) [214] void check_shifted_sum<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char)
[242] void test_constant<int, custom_add_constants<int> >(int*, int, char const*) [288] void test_constant<unsigned long, custom_sub_constants<unsigned long> >(unsigned long*, int, char const*) [215] void check_shifted_sum<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char)
[243] void test_constant<int, custom_and_constants<int> >(int*, int, char const*) [142] void test_constant<unsigned long, custom_xor_constants<unsigned long> >(unsigned long*, int, char const*) [216] void check_shifted_sum<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char)
[244] void test_constant<int, custom_mod_constants<int> >(int*, int, char const*) [27] void test_constant<unsigned long, custom_constant_divide<unsigned long> >(unsigned long*, int, char const*) [126] void check_shifted_sum<unsigned char, custom_lessthanequal_constants<unsigned char> >(unsigned char)
[245] void test_constant<int, custom_sub_constants<int> >(int*, int, char const*) [289] void test_constant<unsigned long, custom_equal_constants<unsigned long> >(unsigned long*, int, char const*) [217] void check_shifted_sum<unsigned char, custom_multiple_constant_mixed<unsigned char> >(unsigned char)
[246] void test_constant<int, custom_xor_constants<int> >(int*, int, char const*) [290] void test_constant<unsigned long, custom_divide_constants<unsigned long> >(unsigned long*, int, char const*) [218] void check_shifted_sum<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char)
[17] void test_constant<int, custom_constant_divide<int> >(int*, int, char const*) [41] void test_constant<unsigned long, custom_constant_multiply<unsigned long> >(unsigned long*, int, char const*) [219] void check_shifted_sum<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char)
[247] void test_constant<int, custom_equal_constants<int> >(int*, int, char const*) [291] void test_constant<unsigned long, custom_lessthan_constants<unsigned long> >(unsigned long*, int, char const*) [175] void check_shifted_sum<unsigned char, custom_greaterthanequal_constants<unsigned char> >(unsigned char)
[248] void test_constant<int, custom_divide_constants<int> >(int*, int, char const*) [292] void test_constant<unsigned long, custom_multiply_constants<unsigned long> >(unsigned long*, int, char const*) [220] void check_shifted_sum<unsigned char, custom_multiple_constant_multiply<unsigned char> >(unsigned char)
[48] void test_constant<int, custom_constant_multiply<int> >(int*, int, char const*) [293] void test_constant<unsigned long, custom_notequal_constants<unsigned long> >(unsigned long*, int, char const*) [221] void check_shifted_sum<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char)
[249] void test_constant<int, custom_lessthan_constants<int> >(int*, int, char const*) [63] void test_constant<unsigned long, custom_multiple_constant_or<unsigned long> >(unsigned long*, int, char const*) [176] void check_shifted_sum<unsigned int, custom_two<unsigned int> >(unsigned int)
[250] void test_constant<int, custom_multiply_constants<int> >(int*, int, char const*) [294] void test_constant<unsigned long, custom_greaterthan_constants<unsigned long> >(unsigned long*, int, char const*) [127] void check_shifted_sum<short, custom_two<short> >(short)
[251] void test_constant<int, custom_notequal_constants<int> >(int*, int, char const*) [64] void test_constant<unsigned long, custom_multiple_constant_add<unsigned long> >(unsigned long*, int, char const*) [145] void check_shifted_sum<short, custom_constant_or<short> >(short)
[100] void test_constant<int, custom_multiple_constant_or<int> >(int*, int, char const*) [65] void test_constant<unsigned long, custom_multiple_constant_and<unsigned long> >(unsigned long*, int, char const*) [222] void check_shifted_sum<short, custom_constant_add<short> >(short)
[252] void test_constant<int, custom_greaterthan_constants<int> >(int*, int, char const*) [75] void test_constant<unsigned long, custom_multiple_constant_sub<unsigned long> >(unsigned long*, int, char const*) [223] void check_shifted_sum<short, custom_constant_and<short> >(short)
[101] void test_constant<int, custom_multiple_constant_add<int> >(int*, int, char const*) [70] void test_constant<unsigned long, custom_multiple_constant_xor<unsigned long> >(unsigned long*, int, char const*) [224] void check_shifted_sum<short, custom_constant_sub<short> >(short)
[107] void test_constant<int, custom_multiple_constant_and<int> >(int*, int, char const*) [295] void test_constant<unsigned long, custom_lessthanequal_constants<unsigned long> >(unsigned long*, int, char const*) [225] void check_shifted_sum<short, custom_constant_xor<short> >(short)
[108] void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*) [116] void test_constant<unsigned long, custom_multiple_constant_mixed<unsigned long> >(unsigned long*, int, char const*) [128] void check_shifted_sum<short, custom_or_constants<short> >(short)
[87] void test_constant<int, custom_multiple_constant_xor<int> >(int*, int, char const*) [28] void test_constant<unsigned long, custom_multiple_constant_divide<unsigned long> >(unsigned long*, int, char const*) [177] void check_shifted_sum<short, custom_add_constants<short> >(short)
[253] void test_constant<int, custom_lessthanequal_constants<int> >(int*, int, char const*) [55] void test_constant<unsigned long, custom_multiple_constant_divide2<unsigned long> >(unsigned long*, int, char const*) [178] void check_shifted_sum<short, custom_and_constants<short> >(short)
[114] void test_constant<int, custom_multiple_constant_mixed<int> >(int*, int, char const*) [296] void test_constant<unsigned long, custom_greaterthanequal_constants<unsigned long> >(unsigned long*, int, char const*) [129] void check_shifted_sum<short, custom_mod_constants<short> >(short)
[15] void test_constant<int, custom_multiple_constant_divide<int> >(int*, int, char const*) [44] void test_constant<unsigned long, custom_multiple_constant_multiply<unsigned long> >(unsigned long*, int, char const*) [179] void check_shifted_sum<short, custom_sub_constants<short> >(short)
[109] void test_constant<int, custom_multiple_constant_divide2<int> >(int*, int, char const*) [66] void test_constant<unsigned long, custom_multiple_constant_multiply2<unsigned long> >(unsigned long*, int, char const*) [180] void check_shifted_sum<short, custom_xor_constants<short> >(short)
[254] void test_constant<int, custom_greaterthanequal_constants<int> >(int*, int, char const*) [82] void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*) [226] void check_shifted_sum<short, custom_constant_divide<short> >(short)
[50] void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*) [78] void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*) [181] void check_shifted_sum<short, custom_equal_constants<short> >(short)
[97] void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*) [79] void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*) [182] void check_shifted_sum<short, custom_divide_constants<short> >(short)
[102] void test_constant<unsigned int, custom_constant_or<unsigned int> >(unsigned int*, int, char const*) [80] void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*) [227] void check_shifted_sum<short, custom_constant_multiply<short> >(short)
[103] void test_constant<unsigned int, custom_constant_add<unsigned int> >(unsigned int*, int, char const*) [93] void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*) [130] void check_shifted_sum<short, custom_lessthan_constants<short> >(short)
[110] void test_constant<unsigned int, custom_constant_and<unsigned int> >(unsigned int*, int, char const*) [297] void test_constant<unsigned short, custom_or_constants<unsigned short> >(unsigned short*, int, char const*) [183] void check_shifted_sum<short, custom_multiply_constants<short> >(short)
[88] void test_constant<unsigned int, custom_constant_sub<unsigned int> >(unsigned int*, int, char const*) [298] void test_constant<unsigned short, custom_and_constants<unsigned short> >(unsigned short*, int, char const*) [117] void check_shifted_sum<short, custom_notequal_constants<short> >(short)
[111] void test_constant<unsigned int, custom_constant_xor<unsigned int> >(unsigned int*, int, char const*) [299] void test_constant<unsigned short, custom_xor_constants<unsigned short> >(unsigned short*, int, char const*) [228] void check_shifted_sum<short, custom_multiple_constant_or<short> >(short)
[141] void test_constant<unsigned int, custom_or_constants<unsigned int> >(unsigned int*, int, char const*) [47] void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*) [184] void check_shifted_sum<short, custom_greaterthan_constants<short> >(short)
[255] void test_constant<unsigned int, custom_add_constants<unsigned int> >(unsigned int*, int, char const*) [37] void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [139] void check_shifted_sum<short, custom_multiple_constant_add<short> >(short)
[256] void test_constant<unsigned int, custom_and_constants<unsigned int> >(unsigned int*, int, char const*) [76] void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*) [146] void check_shifted_sum<short, custom_multiple_constant_and<short> >(short)
[257] void test_constant<unsigned int, custom_mod_constants<unsigned int> >(unsigned int*, int, char const*) [94] void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*) [229] void check_shifted_sum<short, custom_multiple_constant_sub<short> >(short)
[258] void test_constant<unsigned int, custom_sub_constants<unsigned int> >(unsigned int*, int, char const*) [83] void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*) [230] void check_shifted_sum<short, custom_multiple_constant_xor<short> >(short)
[259] void test_constant<unsigned int, custom_xor_constants<unsigned int> >(unsigned int*, int, char const*) [95] void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*) [185] void check_shifted_sum<short, custom_lessthanequal_constants<short> >(short)
[24] void test_constant<unsigned int, custom_constant_divide<unsigned int> >(unsigned int*, int, char const*) [81] void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*) [231] void check_shifted_sum<short, custom_multiple_constant_mixed<short> >(short)
[260] void test_constant<unsigned int, custom_equal_constants<unsigned int> >(unsigned int*, int, char const*) [300] void test_constant<unsigned short, custom_lessthanequal_constants<unsigned short> >(unsigned short*, int, char const*) [232] void check_shifted_sum<short, custom_multiple_constant_divide<short> >(short)
[261] void test_constant<unsigned int, custom_divide_constants<unsigned int> >(unsigned int*, int, char const*) [112] void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*) [233] void check_shifted_sum<short, custom_multiple_constant_divide2<short> >(short)
[49] void test_constant<unsigned int, custom_constant_multiply<unsigned int> >(unsigned int*, int, char const*) [46] void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*) [131] void check_shifted_sum<short, custom_greaterthanequal_constants<short> >(short)
[262] void test_constant<unsigned int, custom_lessthan_constants<unsigned int> >(unsigned int*, int, char const*) [77] void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*) [234] void check_shifted_sum<short, custom_multiple_constant_multiply<short> >(short)
[263] void test_constant<unsigned int, custom_multiply_constants<unsigned int> >(unsigned int*, int, char const*) [36] void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [235] void check_shifted_sum<short, custom_multiple_constant_multiply2<short> >(short)
[264] void test_constant<unsigned int, custom_notequal_constants<unsigned int> >(unsigned int*, int, char const*) [96] void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*) [186] void check_shifted_sum<unsigned short, custom_two<unsigned short> >(unsigned short)
[89] void test_constant<unsigned int, custom_multiple_constant_or<unsigned int> >(unsigned int*, int, char const*) [155] void check_shifted_sum<signed char, custom_two<signed char> >(signed char) [187] void check_shifted_sum<unsigned short, custom_add_constants<unsigned short> >(unsigned short)
[265] void test_constant<unsigned int, custom_greaterthan_constants<unsigned int> >(unsigned int*, int, char const*) [190] void check_shifted_sum<signed char, custom_constant_or<signed char> >(signed char) [132] void check_shifted_sum<unsigned short, custom_mod_constants<unsigned short> >(unsigned short)
[104] void test_constant<unsigned int, custom_multiple_constant_add<unsigned int> >(unsigned int*, int, char const*) [191] void check_shifted_sum<signed char, custom_constant_add<signed char> >(signed char) [188] void check_shifted_sum<unsigned short, custom_sub_constants<unsigned short> >(unsigned short)
[90] void test_constant<unsigned int, custom_multiple_constant_and<unsigned int> >(unsigned int*, int, char const*) [192] void check_shifted_sum<signed char, custom_constant_and<signed char> >(signed char) [189] void check_shifted_sum<unsigned short, custom_equal_constants<unsigned short> >(unsigned short)
[105] void test_constant<unsigned int, custom_multiple_constant_sub<unsigned int> >(unsigned int*, int, char const*) [193] void check_shifted_sum<signed char, custom_constant_sub<signed char> >(signed char) [143] void check_shifted_sum<unsigned short, custom_divide_constants<unsigned short> >(unsigned short)
[91] void test_constant<unsigned int, custom_multiple_constant_xor<unsigned int> >(unsigned int*, int, char const*) [194] void check_shifted_sum<signed char, custom_constant_xor<signed char> >(signed char) [133] void check_shifted_sum<unsigned short, custom_lessthan_constants<unsigned short> >(unsigned short)
[266] void test_constant<unsigned int, custom_lessthanequal_constants<unsigned int> >(unsigned int*, int, char const*) [119] void check_shifted_sum<signed char, custom_or_constants<signed char> >(signed char) [144] void check_shifted_sum<unsigned short, custom_multiply_constants<unsigned short> >(unsigned short)
[115] void test_constant<unsigned int, custom_multiple_constant_mixed<unsigned int> >(unsigned int*, int, char const*) [120] void check_shifted_sum<signed char, custom_and_constants<signed char> >(signed char) [134] void check_shifted_sum<unsigned short, custom_notequal_constants<unsigned short> >(unsigned short)
[25] void test_constant<unsigned int, custom_multiple_constant_divide<unsigned int> >(unsigned int*, int, char const*) [156] void check_shifted_sum<signed char, custom_mod_constants<signed char> >(signed char) [135] void check_shifted_sum<unsigned short, custom_greaterthan_constants<unsigned short> >(unsigned short)
[106] void test_constant<unsigned int, custom_multiple_constant_divide2<unsigned int> >(unsigned int*, int, char const*) [157] void check_shifted_sum<signed char, custom_xor_constants<signed char> >(signed char) [136] void check_shifted_sum<unsigned short, custom_greaterthanequal_constants<unsigned short> >(unsigned short)
[267] void test_constant<unsigned int, custom_greaterthanequal_constants<unsigned int> >(unsigned int*, int, char const*) [195] void check_shifted_sum<signed char, custom_constant_divide<signed char> >(signed char) [301] __static_initialization_and_destruction_0(int, int) (simple_types_constant_folding.cpp)
[51] void test_constant<unsigned int, custom_multiple_constant_multiply<unsigned int> >(unsigned int*, int, char const*) [158] void check_shifted_sum<signed char, custom_equal_constants<signed char> >(signed char) [238] timer()
[92] void test_constant<unsigned int, custom_multiple_constant_multiply2<unsigned int> >(unsigned int*, int, char const*) [159] void check_shifted_sum<signed char, custom_divide_constants<signed char> >(signed char) [239] summarize(char const*, int, int, int, int)
[268] void test_constant<long, custom_two<long> >(long*, int, char const*) [196] void check_shifted_sum<signed char, custom_constant_multiply<signed char> >(signed char) [1] main
[56] void test_constant<long, custom_constant_or<long> >(long*, int, char const*) [121] void check_shifted_sum<signed char, custom_lessthan_constants<signed char> >(signed char)
[-- Attachment #3: report41 --]
[-- Type: text/plain, Size: 25500 bytes --]
./simple_types_constant_folding
test description absolute operations ratio with
number time per second test0
0 "int8_t constant" 0.07 sec 228571.43 M 1.00
1 "int8_t add constants" 0.00 sec inf M 0.00
2 "int8_t subtract constants" 0.00 sec inf M 0.00
3 "int8_t multiply constants" 0.08 sec 200000.00 M 1.14
4 "int8_t divide constants" 0.07 sec 228571.43 M 1.00
5 "int8_t mod constants" 0.08 sec 200000.00 M 1.14
6 "int8_t equal constants" 0.08 sec 200000.00 M 1.14
7 "int8_t notequal constants" 0.07 sec 228571.43 M 1.00
8 "int8_t greater than constants" 0.08 sec 200000.00 M 1.14
9 "int8_t less than constants" 0.07 sec 228571.43 M 1.00
10 "int8_t greater than equal constants" 0.08 sec 200000.00 M 1.14
11 "int8_t less than equal constants" 0.08 sec 200000.00 M 1.14
12 "int8_t and constants" 0.07 sec 228571.43 M 1.00
13 "int8_t or constants" 0.08 sec 200000.00 M 1.14
14 "int8_t xor constants" 0.07 sec 228571.43 M 1.00
Total absolute time for int8_t simple constant folding: 0.98 sec
test description absolute operations ratio with
number time per second test0
0 "int8_t constant add" 1.35 sec 1185.19 M 1.00
1 "int8_t multiple constant adds" 1.35 sec 1185.19 M 1.00
2 "int8_t constant subtract" 1.35 sec 1185.19 M 1.00
3 "int8_t multiple constant subtracts" 1.35 sec 1185.19 M 1.00
4 "int8_t constant multiply" 1.69 sec 946.75 M 1.25
5 "int8_t multiple constant multiplies" 1.68 sec 952.38 M 1.24
6 "int8_t multiple constant multiply2" 1.35 sec 1185.19 M 1.00
7 "int8_t constant divide" 3.86 sec 414.51 M 2.86
8 "int8_t multiple constant divides" 6.03 sec 265.34 M 4.47
9 "int8_t multiple constant divide2" 1.35 sec 1185.19 M 1.00
10 "int8_t multiple constant mixed" 0.97 sec 1649.48 M 0.72
11 "int8_t constant and" 1.35 sec 1185.19 M 1.00
12 "int8_t multiple constant and" 1.35 sec 1185.19 M 1.00
13 "int8_t constant or" 1.34 sec 1194.03 M 0.99
14 "int8_t multiple constant or" 1.35 sec 1185.19 M 1.00
15 "int8_t constant xor" 1.35 sec 1185.19 M 1.00
16 "int8_t multiple constant xor" 1.35 sec 1185.19 M 1.00
Total absolute time for int8_t constant folding: 30.42 sec
test description absolute operations ratio with
number time per second test0
0 "uint8_t constant" 0.07 sec 228571.43 M 1.00
1 "uint8_t add constants" 0.07 sec 228571.43 M 1.00
2 "uint8_t subtract constants" 0.08 sec 200000.00 M 1.14
3 "uint8_t multiply constants" 0.07 sec 228571.43 M 1.00
4 "uint8_t divide constants" 0.08 sec 200000.00 M 1.14
5 "uint8_t mod constants" 0.07 sec 228571.43 M 1.00
6 "uint8_t equal constants" 0.08 sec 200000.00 M 1.14
7 "uint8_t notequal constants" 0.07 sec 228571.43 M 1.00
8 "uint8_t greater than constants" 0.08 sec 200000.00 M 1.14
9 "uint8_t less than constants" 0.07 sec 228571.43 M 1.00
10 "uint8_t greater than equal constants" 0.08 sec 200000.00 M 1.14
11 "uint8_t less than equal constants" 0.07 sec 228571.43 M 1.00
12 "uint8_t and constants" 0.08 sec 200000.00 M 1.14
13 "uint8_t or constants" 0.07 sec 228571.43 M 1.00
14 "uint8_t xor constants" 0.08 sec 200000.00 M 1.14
Total absolute time for uint8_t simple constant folding: 1.12 sec
test description absolute operations ratio with
number time per second test0
0 "uint8_t constant add" 1.34 sec 1194.03 M 1.00
1 "uint8_t multiple constant adds" 1.35 sec 1185.19 M 1.01
2 "uint8_t constant subtract" 1.35 sec 1185.19 M 1.01
3 "uint8_t multiple constant subtracts" 1.35 sec 1185.19 M 1.01
4 "uint8_t constant multiply" 1.68 sec 952.38 M 1.25
5 "uint8_t multiple constant multiplies" 1.69 sec 946.75 M 1.26
6 "uint8_t multiple constant multiply2" 1.34 sec 1194.03 M 1.00
7 "uint8_t constant divide" 3.53 sec 453.26 M 2.63
8 "uint8_t multiple constant divides" 3.52 sec 454.55 M 2.63
9 "uint8_t multiple constant divide2" 1.34 sec 1194.03 M 1.00
10 "uint8_t multiple constant mixed" 0.98 sec 1632.65 M 0.73
11 "uint8_t constant and" 1.34 sec 1194.03 M 1.00
12 "uint8_t multiple constant and" 1.35 sec 1185.19 M 1.01
13 "uint8_t constant or" 1.35 sec 1185.19 M 1.01
14 "uint8_t multiple constant or" 1.35 sec 1185.19 M 1.01
15 "uint8_t constant xor" 1.34 sec 1194.03 M 1.00
16 "uint8_t multiple constant xor" 1.35 sec 1185.19 M 1.01
Total absolute time for uint8_t constant folding: 27.55 sec
test description absolute operations ratio with
number time per second test0
0 "int16_t constant" 0.08 sec 200000.00 M 1.00
1 "int16_t add constants" 0.07 sec 228571.43 M 0.88
2 "int16_t subtract constants" 0.08 sec 200000.00 M 1.00
3 "int16_t multiply constants" 0.07 sec 228571.43 M 0.88
4 "int16_t divide constants" 0.08 sec 200000.00 M 1.00
5 "int16_t mod constants" 0.08 sec 200000.00 M 1.00
6 "int16_t equal constants" 0.07 sec 228571.43 M 0.88
7 "int16_t notequal constants" 0.08 sec 200000.00 M 1.00
8 "int16_t greater than constants" 0.07 sec 228571.43 M 0.88
9 "int16_t less than constants" 0.08 sec 200000.00 M 1.00
10 "int16_t greater than equal constants" 0.07 sec 228571.43 M 0.88
11 "int16_t less than equal constants" 0.08 sec 200000.00 M 1.00
12 "int16_t and constants" 0.08 sec 200000.00 M 1.00
13 "int16_t or constants" 0.07 sec 228571.43 M 0.88
14 "int16_t xor constants" 0.08 sec 200000.00 M 1.00
Total absolute time for int16_t simple constant folding: 1.14 sec
test description absolute operations ratio with
number time per second test0
0 "int16_t constant add" 1.35 sec 1185.19 M 1.00
1 "int16_t multiple constant adds" 1.35 sec 1185.19 M 1.00
2 "int16_t constant subtract" 1.34 sec 1194.03 M 0.99
3 "int16_t multiple constant subtracts" 1.35 sec 1185.19 M 1.00
4 "int16_t constant multiply" 1.76 sec 909.09 M 1.30
5 "int16_t multiple constant multiplies" 1.77 sec 903.95 M 1.31
6 "int16_t multiple constant multiply2" 1.34 sec 1194.03 M 0.99
7 "int16_t constant divide" 3.86 sec 414.51 M 2.86
8 "int16_t multiple constant divides" 4.03 sec 397.02 M 2.99
9 "int16_t multiple constant divide2" 1.34 sec 1194.03 M 0.99
10 "int16_t multiple constant mixed" 0.98 sec 1632.65 M 0.73
11 "int16_t constant and" 1.34 sec 1194.03 M 0.99
12 "int16_t multiple constant and" 1.35 sec 1185.19 M 1.00
13 "int16_t constant or" 1.35 sec 1185.19 M 1.00
14 "int16_t multiple constant or" 1.35 sec 1185.19 M 1.00
15 "int16_t constant xor" 1.35 sec 1185.19 M 1.00
16 "int16_t multiple constant xor" 1.35 sec 1185.19 M 1.00
Total absolute time for int16_t constant folding: 28.56 sec
test description absolute operations ratio with
number time per second test0
0 "uint16_t constant" 0.07 sec 228571.43 M 1.00
1 "uint16_t add constants" 0.08 sec 200000.00 M 1.14
2 "uint16_t subtract constants" 0.07 sec 228571.43 M 1.00
3 "uint16_t multiply constants" 0.08 sec 200000.00 M 1.14
4 "uint16_t divide constants" 0.07 sec 228571.43 M 1.00
5 "uint16_t mod constants" 0.08 sec 200000.00 M 1.14
6 "uint16_t equal constants" 0.07 sec 228571.43 M 1.00
7 "uint16_t notequal constants" 0.08 sec 200000.00 M 1.14
8 "uint16_t greater than constants" 0.07 sec 228571.43 M 1.00
9 "uint16_t less than constants" 0.08 sec 200000.00 M 1.14
10 "uint16_t greater than equal constants" 0.07 sec 228571.43 M 1.00
11 "uint16_t less than equal constants" 0.00 sec inf M 0.00
12 "uint16_t and constants" 0.01 sec 1600000.00 M 0.14
13 "uint16_t or constants" 0.00 sec inf M 0.00
14 "uint16_t xor constants" 0.00 sec inf M 0.00
Total absolute time for uint16_t simple constant folding: 0.83 sec
test description absolute operations ratio with
number time per second test0
0 "uint16_t constant add" 1.52 sec 1052.63 M 1.00
1 "uint16_t multiple constant adds" 1.53 sec 1045.75 M 1.01
2 "uint16_t constant subtract" 1.52 sec 1052.63 M 1.00
3 "uint16_t multiple constant subtracts" 1.52 sec 1052.63 M 1.00
4 "uint16_t constant multiply" 2.04 sec 784.31 M 1.34
5 "uint16_t multiple constant multiplies" 2.03 sec 788.18 M 1.34
6 "uint16_t multiple constant multiply2" 1.52 sec 1052.63 M 1.00
7 "uint16_t constant divide" 1.96 sec 816.33 M 1.29
8 "uint16_t multiple constant divides" 1.97 sec 812.18 M 1.30
9 "uint16_t multiple constant divide2" 1.53 sec 1045.75 M 1.01
10 "uint16_t multiple constant mixed" 1.35 sec 1185.19 M 0.89
11 "uint16_t constant and" 1.54 sec 1038.96 M 1.01
12 "uint16_t multiple constant and" 1.52 sec 1052.63 M 1.00
13 "uint16_t constant or" 1.53 sec 1045.75 M 1.01
14 "uint16_t multiple constant or" 1.54 sec 1038.96 M 1.01
15 "uint16_t constant xor" 1.52 sec 1052.63 M 1.00
16 "uint16_t multiple constant xor" 1.53 sec 1045.75 M 1.01
Total absolute time for uint16_t constant folding: 27.67 sec
test description absolute operations ratio with
number time per second test0
0 "int32_t constant" 0.00 sec inf M nan
1 "int32_t add constants" 0.00 sec inf M nan
2 "int32_t subtract constants" 0.00 sec inf M nan
3 "int32_t multiply constants" 0.00 sec inf M nan
4 "int32_t divide constants" 0.00 sec inf M nan
5 "int32_t mod constants" 0.00 sec inf M nan
6 "int32_t equal constants" 0.00 sec inf M nan
7 "int32_t notequal constants" 0.00 sec inf M nan
8 "int32_t greater than constants" 0.00 sec inf M nan
9 "int32_t less than constants" 0.00 sec inf M nan
10 "int32_t greater than equal constants" 0.00 sec inf M nan
11 "int32_t less than equal constants" 0.00 sec inf M nan
12 "int32_t and constants" 0.00 sec inf M nan
13 "int32_t or constants" 0.01 sec 1600000.00 M inf
14 "int32_t xor constants" 0.00 sec inf M nan
Total absolute time for int32_t simple constant folding: 0.01 sec
test description absolute operations ratio with
number time per second test0
0 "int32_t constant add" 1.51 sec 1059.60 M 1.00
1 "int32_t multiple constant adds" 1.51 sec 1059.60 M 1.00
2 "int32_t constant subtract" 1.51 sec 1059.60 M 1.00
3 "int32_t multiple constant subtracts" 1.51 sec 1059.60 M 1.00
4 "int32_t constant multiply" 1.94 sec 824.74 M 1.28
5 "int32_t multiple constant multiplies" 1.94 sec 824.74 M 1.28
6 "int32_t multiple constant multiply2" 1.52 sec 1052.63 M 1.01
7 "int32_t constant divide" 3.55 sec 450.70 M 2.35
8 "int32_t multiple constant divides" 3.85 sec 415.58 M 2.55
9 "int32_t multiple constant divide2" 1.51 sec 1059.60 M 1.00
10 "int32_t multiple constant mixed" 1.34 sec 1194.03 M 0.89
11 "int32_t constant and" 1.51 sec 1059.60 M 1.00
12 "int32_t multiple constant and" 1.51 sec 1059.60 M 1.00
13 "int32_t constant or" 1.52 sec 1052.63 M 1.01
14 "int32_t multiple constant or" 1.51 sec 1059.60 M 1.00
15 "int32_t constant xor" 1.51 sec 1059.60 M 1.00
16 "int32_t multiple constant xor" 1.51 sec 1059.60 M 1.00
Total absolute time for int32_t constant folding: 30.76 sec
test description absolute operations ratio with
number time per second test0
0 "uint32_t constant" 0.07 sec 228571.43 M 1.00
1 "uint32_t add constants" 0.01 sec 1600000.00 M 0.14
2 "uint32_t subtract constants" 0.00 sec inf M 0.00
3 "uint32_t multiply constants" 0.00 sec inf M 0.00
4 "uint32_t divide constants" 0.00 sec inf M 0.00
5 "uint32_t mod constants" 0.00 sec inf M 0.00
6 "uint32_t equal constants" 0.00 sec inf M 0.00
7 "uint32_t notequal constants" 0.00 sec inf M 0.00
8 "uint32_t greater than constants" 0.00 sec inf M 0.00
9 "uint32_t less than constants" 0.00 sec inf M 0.00
10 "uint32_t greater than equal constants" 0.00 sec inf M 0.00
11 "uint32_t less than equal constants" 0.00 sec inf M 0.00
12 "uint32_t and constants" 0.00 sec inf M 0.00
13 "uint32_t or constants" 0.01 sec 1600000.00 M 0.14
14 "uint32_t xor constants" 0.00 sec inf M 0.00
Total absolute time for uint32_t simple constant folding: 0.09 sec
test description absolute operations ratio with
number time per second test0
0 "uint32_t constant add" 1.51 sec 1059.60 M 1.00
1 "uint32_t multiple constant adds" 1.51 sec 1059.60 M 1.00
2 "uint32_t constant subtract" 1.51 sec 1059.60 M 1.00
3 "uint32_t multiple constant subtracts" 1.51 sec 1059.60 M 1.00
4 "uint32_t constant multiply" 1.94 sec 824.74 M 1.28
5 "uint32_t multiple constant multiplies" 1.94 sec 824.74 M 1.28
6 "uint32_t multiple constant multiply2" 1.51 sec 1059.60 M 1.00
7 "uint32_t constant divide" 2.78 sec 575.54 M 1.84
8 "uint32_t multiple constant divides" 2.77 sec 577.62 M 1.83
9 "uint32_t multiple constant divide2" 1.51 sec 1059.60 M 1.00
10 "uint32_t multiple constant mixed" 1.34 sec 1194.03 M 0.89
11 "uint32_t constant and" 1.51 sec 1059.60 M 1.00
12 "uint32_t multiple constant and" 1.51 sec 1059.60 M 1.00
13 "uint32_t constant or" 1.51 sec 1059.60 M 1.00
14 "uint32_t multiple constant or" 1.52 sec 1052.63 M 1.01
15 "uint32_t constant xor" 1.51 sec 1059.60 M 1.00
16 "uint32_t multiple constant xor" 1.51 sec 1059.60 M 1.00
Total absolute time for uint32_t constant folding: 28.90 sec
test description absolute operations ratio with
number time per second test0
0 "int64_t constant" 0.00 sec inf M nan
1 "int64_t add constants" 0.00 sec inf M nan
2 "int64_t subtract constants" 0.00 sec inf M nan
3 "int64_t multiply constants" 0.00 sec inf M nan
4 "int64_t divide constants" 0.00 sec inf M nan
5 "int64_t mod constants" 0.00 sec inf M nan
6 "int64_t equal constants" 0.00 sec inf M nan
7 "int64_t notequal constants" 0.00 sec inf M nan
8 "int64_t greater than constants" 0.00 sec inf M nan
9 "int64_t less than constants" 0.00 sec inf M nan
10 "int64_t greater than equal constants" 0.00 sec inf M nan
11 "int64_t less than equal constants" 0.00 sec inf M nan
12 "int64_t and constants" 0.01 sec 1600000.00 M inf
13 "int64_t or constants" 0.00 sec inf M nan
14 "int64_t xor constants" 0.00 sec inf M nan
Total absolute time for int64_t simple constant folding: 0.01 sec
test description absolute operations ratio with
number time per second test0
0 "int64_t constant add" 1.57 sec 1019.11 M 1.00
1 "int64_t multiple constant adds" 1.57 sec 1019.11 M 1.00
2 "int64_t constant subtract" 1.56 sec 1025.64 M 0.99
3 "int64_t multiple constant subtracts" 1.57 sec 1019.11 M 1.00
4 "int64_t constant multiply" 2.03 sec 788.18 M 1.29
5 "int64_t multiple constant multiplies" 2.03 sec 788.18 M 1.29
6 "int64_t multiple constant multiply2" 1.58 sec 1012.66 M 1.01
7 "int64_t constant divide" 3.40 sec 470.59 M 2.17
8 "int64_t multiple constant divides" 3.78 sec 423.28 M 2.41
9 "int64_t multiple constant divide2" 1.57 sec 1019.11 M 1.00
10 "int64_t multiple constant mixed" 1.34 sec 1194.03 M 0.85
11 "int64_t constant and" 1.57 sec 1019.11 M 1.00
12 "int64_t multiple constant and" 1.57 sec 1019.11 M 1.00
13 "int64_t constant or" 1.57 sec 1019.11 M 1.00
14 "int64_t multiple constant or" 1.56 sec 1025.64 M 0.99
15 "int64_t constant xor" 1.57 sec 1019.11 M 1.00
16 "int64_t multiple constant xor" 1.57 sec 1019.11 M 1.00
Total absolute time for int64_t constant folding: 31.41 sec
test description absolute operations ratio with
number time per second test0
0 "uint64_t constant" 0.00 sec inf M nan
1 "uint64_t add constants" 0.00 sec inf M nan
2 "uint64_t subtract constants" 0.00 sec inf M nan
3 "uint64_t multiply constants" 0.00 sec inf M nan
4 "uint64_t divide constants" 0.01 sec 1600000.00 M inf
5 "uint64_t mod constants" 0.00 sec inf M nan
6 "uint64_t equal constants" 0.00 sec inf M nan
7 "uint64_t notequal constants" 0.00 sec inf M nan
8 "uint64_t greater than constants" 0.00 sec inf M nan
9 "uint64_t less than constants" 0.00 sec inf M nan
10 "uint64_t greater than equal constants" 0.00 sec inf M nan
11 "uint64_t less than equal constants" 0.00 sec inf M nan
12 "uint64_t and constants" 0.00 sec inf M nan
13 "uint64_t or constants" 0.00 sec inf M nan
14 "uint64_t xor constants" 0.00 sec inf M nan
Total absolute time for uint64_t simple constant folding: 0.01 sec
test description absolute operations ratio with
number time per second test0
0 "uint64_t constant add" 1.57 sec 1019.11 M 1.00
1 "uint64_t multiple constant adds" 1.57 sec 1019.11 M 1.00
2 "uint64_t constant subtract" 1.57 sec 1019.11 M 1.00
3 "uint64_t multiple constant subtracts" 1.57 sec 1019.11 M 1.00
4 "uint64_t constant multiply" 2.01 sec 796.02 M 1.28
5 "uint64_t multiple constant multiplies" 2.02 sec 792.08 M 1.29
6 "uint64_t multiple constant multiply2" 1.57 sec 1019.11 M 1.00
7 "uint64_t constant divide" 2.68 sec 597.01 M 1.71
8 "uint64_t multiple constant divides" 2.68 sec 597.01 M 1.71
9 "uint64_t multiple constant divide2" 1.58 sec 1012.66 M 1.01
10 "uint64_t multiple constant mixed" 1.34 sec 1194.03 M 0.85
11 "uint64_t constant and" 1.57 sec 1019.11 M 1.00
12 "uint64_t multiple constant and" 1.57 sec 1019.11 M 1.00
13 "uint64_t constant or" 1.57 sec 1019.11 M 1.00
14 "uint64_t multiple constant or" 1.57 sec 1019.11 M 1.00
15 "uint64_t constant xor" 1.57 sec 1019.11 M 1.00
16 "uint64_t multiple constant xor" 1.56 sec 1025.64 M 0.99
Total absolute time for uint64_t constant folding: 29.57 sec
test description absolute operations ratio with
number time per second test0
0 "float constant" 20.17 sec 793.26 M 1.00
1 "float add constants" 20.17 sec 793.26 M 1.00
2 "float subtract constants" 20.09 sec 796.42 M 1.00
3 "float multiply constants" 20.09 sec 796.42 M 1.00
4 "float divide constants" 20.10 sec 796.02 M 1.00
Total absolute time for float simple constant folding: 100.62 sec
test description absolute operations ratio with
number time per second test0
0 "float constant add" 2.01 sec 796.02 M 1.00
1 "float multiple constant adds" 3.36 sec 476.19 M 1.67
2 "float constant subtract" 2.02 sec 792.08 M 1.00
3 "float multiple constant subtracts" 3.38 sec 473.37 M 1.68
4 "float constant multiply" 2.03 sec 788.18 M 1.01
5 "float multiple constant multiplies" 2.71 sec 590.41 M 1.35
6 "float multiple constant multiply2" 2.02 sec 792.08 M 1.00
7 "float constant divide" 11.45 sec 139.74 M 5.70
8 "float multiple constant divides" 22.86 sec 69.99 M 11.37
9 "float multiple constant divide2" 2.01 sec 796.02 M 1.00
10 "float multiple constant mixed" 2.02 sec 792.08 M 1.00
Total absolute time for float constant folding: 55.87 sec
test description absolute operations ratio with
number time per second test0
0 "double constant" 20.10 sec 796.02 M 1.00
1 "double add constants" 20.17 sec 793.26 M 1.00
2 "double subtract constants" 20.09 sec 796.42 M 1.00
3 "double multiply constants" 20.09 sec 796.42 M 1.00
4 "double divide constants" 20.09 sec 796.42 M 1.00
Total absolute time for double simple constant folding: 100.54 sec
test description absolute operations ratio with
number time per second test0
0 "double constant add" 2.07 sec 772.95 M 1.00
1 "double multiple constant adds" 3.52 sec 454.55 M 1.70
2 "double constant subtract" 2.06 sec 776.70 M 1.00
3 "double multiple constant subtracts" 3.54 sec 451.98 M 1.71
4 "double constant multiply" 2.03 sec 788.18 M 0.98
5 "double multiple constant multiplies" 2.89 sec 553.63 M 1.40
6 "double multiple constant multiply2" 2.08 sec 769.23 M 1.00
7 "double constant divide" 20.77 sec 77.03 M 10.03
8 "double multiple constant divides" 41.57 sec 38.49 M 20.08
9 "double multiple constant divide2" 2.06 sec 776.70 M 1.00
10 "double multiple constant mixed" 2.20 sec 727.27 M 1.06
Total absolute time for double constant folding: 84.79 sec
[-- Attachment #4: simple_types_constant_folding.cpp --]
[-- Type: text/plain, Size: 38506 bytes --]
/*
Copyright 2007-2008 Adobe Systems Incorporated
Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
or a copy at http://stlab.adobe.com/licenses.html )
Goal: Test compiler optimizations related to constant folding of simple language defined types
Assumptions:
1) the compiler will combine constant calculations into a single constant for simple types
aka constant folding
result = A + B ==> result = constant
result = A - B ==> result = constant
result = A * B ==> result = constant
result = A / B ==> result = constant
result = A % B ==> result = constant for integer types
result = (A == B) ==> result = constant for integer types
result = (A != B) ==> result = constant for integer types
result = (A > B) ==> result = constant for integer types
result = (A < B) ==> result = constant for integer types
result = (A >= B) ==> result = constant for integer types
result = (A <= B) ==> result = constant for integer types
result = (A & B) ==> result = constant for integer types
result = (A | B) ==> result = constant for integer types
result = (A ^ B) ==> result = constant for integer types
result = input + A + B + C + D ==> result = input + (A+B+C+D)
result = input - A - B - C - D ==> result = input - (A+B+C+D)
result = input * A * B * C * D ==> result = input * (A*B*C*D)
result = input + A * B * C * D ==> result = input + (A*B*C*D)
result = ((((input/A) /B) /C) /D) ==> result = input / (A*B*C*D)
result = input + (((A /B) /C) /D) ==> result = input + (A/B/C/D)
result = input & A & B & C & D ==> result = input & (A&B&C&D) for integer types
result = input | A | B | C | D ==> result = input | (A|B|C|D) for integer types
result = input ^ A ^ B ^ C ^ D ==> result = input ^ (A^B^C^D) for integer types
NOTE - in some cases, loop invariant code motion might move the constant calculation out of the inner loop
making it appear that the constants were folded
But in the constant result cases, we want the compiler to recognize the constant and move it out of the loop
*/
/******************************************************************************/
#include "benchmark_stdint.hpp"
#include <cstddef>
#include <cstdio>
#include <ctime>
#include <cstdlib>
#include <cmath>
#include "benchmark_results.h"
#include "benchmark_timer.h"
/******************************************************************************/
// this constant may need to be adjusted to give reasonable minimum times
// For best results, times should be about 1.0 seconds for the minimum test run
int base_iterations = 2000000;
int iterations = base_iterations;
// 8000 items, or between 8k and 64k of data
// this is intended to remain within the L2 cache of most common CPUs
const int SIZE = 8000;
// initial value for filling our arrays, may be changed from the command line
double init_value = 1.0;
/******************************************************************************/
// our global arrays of numbers to be operated upon
double dataDouble[SIZE];
float dataFloat[SIZE];
uint64_t data64unsigned[SIZE];
int64_t data64[SIZE];
uint32_t data32unsigned[SIZE];
int32_t data32[SIZE];
uint16_t data16unsigned[SIZE];
int16_t data16[SIZE];
uint8_t data8unsigned[SIZE];
int8_t data8[SIZE];
/******************************************************************************/
#include "benchmark_shared_tests.h"
/******************************************************************************/
int main(int argc, char** argv) {
// output command for documentation:
int i;
for (i = 0; i < argc; ++i)
printf("%s ", argv[i] );
printf("\n");
if (argc > 1) base_iterations = atoi(argv[1]);
if (argc > 2) init_value = (double) atof(argv[2]);
// int8_t
::fill(data8, data8+SIZE, int8_t(init_value));
iterations = base_iterations;
test_constant<int8_t, custom_two<int8_t> >(data8,SIZE,"int8_t constant");
test_constant<int8_t, custom_add_constants<int8_t> >(data8,SIZE,"int8_t add constants");
test_constant<int8_t, custom_sub_constants<int8_t> >(data8,SIZE,"int8_t subtract constants");
test_constant<int8_t, custom_multiply_constants<int8_t> >(data8,SIZE,"int8_t multiply constants");
test_constant<int8_t, custom_divide_constants<int8_t> >(data8,SIZE,"int8_t divide constants");
test_constant<int8_t, custom_mod_constants<int8_t> >(data8,SIZE,"int8_t mod constants");
test_constant<int8_t, custom_equal_constants<int8_t> >(data8,SIZE,"int8_t equal constants");
test_constant<int8_t, custom_notequal_constants<int8_t> >(data8,SIZE,"int8_t notequal constants");
test_constant<int8_t, custom_greaterthan_constants<int8_t> >(data8,SIZE,"int8_t greater than constants");
test_constant<int8_t, custom_lessthan_constants<int8_t> >(data8,SIZE,"int8_t less than constants");
test_constant<int8_t, custom_greaterthanequal_constants<int8_t> >(data8,SIZE,"int8_t greater than equal constants");
test_constant<int8_t, custom_lessthanequal_constants<int8_t> >(data8,SIZE,"int8_t less than equal constants");
test_constant<int8_t, custom_and_constants<int8_t> >(data8,SIZE,"int8_t and constants");
test_constant<int8_t, custom_or_constants<int8_t> >(data8,SIZE,"int8_t or constants");
test_constant<int8_t, custom_xor_constants<int8_t> >(data8,SIZE,"int8_t xor constants");
summarize("int8_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<int8_t, custom_constant_add<int8_t> >(data8,SIZE,"int8_t constant add");
test_constant<int8_t, custom_multiple_constant_add<int8_t> >(data8,SIZE,"int8_t multiple constant adds");
test_constant<int8_t, custom_constant_sub<int8_t> >(data8,SIZE,"int8_t constant subtract");
test_constant<int8_t, custom_multiple_constant_sub<int8_t> >(data8,SIZE,"int8_t multiple constant subtracts");
test_constant<int8_t, custom_constant_multiply<int8_t> >(data8,SIZE,"int8_t constant multiply");
test_constant<int8_t, custom_multiple_constant_multiply<int8_t> >(data8,SIZE,"int8_t multiple constant multiplies");
test_constant<int8_t, custom_multiple_constant_multiply2<int8_t> >(data8,SIZE,"int8_t multiple constant multiply2");
test_constant<int8_t, custom_constant_divide<int8_t> >(data8,SIZE,"int8_t constant divide");
test_constant<int8_t, custom_multiple_constant_divide<int8_t> >(data8,SIZE,"int8_t multiple constant divides");
test_constant<int8_t, custom_multiple_constant_divide2<int8_t> >(data8,SIZE,"int8_t multiple constant divide2");
test_constant<int8_t, custom_multiple_constant_mixed<int8_t> >(data8,SIZE,"int8_t multiple constant mixed");
test_constant<int8_t, custom_constant_and<int8_t> >(data8,SIZE,"int8_t constant and");
test_constant<int8_t, custom_multiple_constant_and<int8_t> >(data8,SIZE,"int8_t multiple constant and");
test_constant<int8_t, custom_constant_or<int8_t> >(data8,SIZE,"int8_t constant or");
test_constant<int8_t, custom_multiple_constant_or<int8_t> >(data8,SIZE,"int8_t multiple constant or");
test_constant<int8_t, custom_constant_xor<int8_t> >(data8,SIZE,"int8_t constant xor");
test_constant<int8_t, custom_multiple_constant_xor<int8_t> >(data8,SIZE,"int8_t multiple constant xor");
summarize("int8_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// unsigned8
::fill(data8unsigned, data8unsigned+SIZE, uint8_t(init_value));
iterations = base_iterations;
test_constant<uint8_t, custom_two<uint8_t> >(data8unsigned,SIZE,"uint8_t constant");
test_constant<uint8_t, custom_add_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t add constants");
test_constant<uint8_t, custom_sub_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t subtract constants");
test_constant<uint8_t, custom_multiply_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t multiply constants");
test_constant<uint8_t, custom_divide_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t divide constants");
test_constant<uint8_t, custom_mod_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t mod constants");
test_constant<uint8_t, custom_equal_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t equal constants");
test_constant<uint8_t, custom_notequal_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t notequal constants");
test_constant<uint8_t, custom_greaterthan_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t greater than constants");
test_constant<uint8_t, custom_lessthan_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t less than constants");
test_constant<uint8_t, custom_greaterthanequal_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t greater than equal constants");
test_constant<uint8_t, custom_lessthanequal_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t less than equal constants");
test_constant<uint8_t, custom_and_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t and constants");
test_constant<uint8_t, custom_or_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t or constants");
test_constant<uint8_t, custom_xor_constants<uint8_t> >(data8unsigned,SIZE,"uint8_t xor constants");
summarize("uint8_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<uint8_t, custom_constant_add<uint8_t> >(data8unsigned,SIZE,"uint8_t constant add");
test_constant<uint8_t, custom_multiple_constant_add<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant adds");
test_constant<uint8_t, custom_constant_sub<uint8_t> >(data8unsigned,SIZE,"uint8_t constant subtract");
test_constant<uint8_t, custom_multiple_constant_sub<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant subtracts");
test_constant<uint8_t, custom_constant_multiply<uint8_t> >(data8unsigned,SIZE,"uint8_t constant multiply");
test_constant<uint8_t, custom_multiple_constant_multiply<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant multiplies");
test_constant<uint8_t, custom_multiple_constant_multiply2<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant multiply2");
test_constant<uint8_t, custom_constant_divide<uint8_t> >(data8unsigned,SIZE,"uint8_t constant divide");
test_constant<uint8_t, custom_multiple_constant_divide<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant divides");
test_constant<uint8_t, custom_multiple_constant_divide2<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant divide2");
test_constant<uint8_t, custom_multiple_constant_mixed<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant mixed");
test_constant<uint8_t, custom_constant_and<uint8_t> >(data8unsigned,SIZE,"uint8_t constant and");
test_constant<uint8_t, custom_multiple_constant_and<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant and");
test_constant<uint8_t, custom_constant_or<uint8_t> >(data8unsigned,SIZE,"uint8_t constant or");
test_constant<uint8_t, custom_multiple_constant_or<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant or");
test_constant<uint8_t, custom_constant_xor<uint8_t> >(data8unsigned,SIZE,"uint8_t constant xor");
test_constant<uint8_t, custom_multiple_constant_xor<uint8_t> >(data8unsigned,SIZE,"uint8_t multiple constant xor");
summarize("uint8_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// int16_t
::fill(data16, data16+SIZE, int16_t(init_value));
iterations = base_iterations;
test_constant<int16_t, custom_two<int16_t> >(data16,SIZE,"int16_t constant");
test_constant<int16_t, custom_add_constants<int16_t> >(data16,SIZE,"int16_t add constants");
test_constant<int16_t, custom_sub_constants<int16_t> >(data16,SIZE,"int16_t subtract constants");
test_constant<int16_t, custom_multiply_constants<int16_t> >(data16,SIZE,"int16_t multiply constants");
test_constant<int16_t, custom_divide_constants<int16_t> >(data16,SIZE,"int16_t divide constants");
test_constant<int16_t, custom_mod_constants<int16_t> >(data16,SIZE,"int16_t mod constants");
test_constant<int16_t, custom_equal_constants<int16_t> >(data16,SIZE,"int16_t equal constants");
test_constant<int16_t, custom_notequal_constants<int16_t> >(data16,SIZE,"int16_t notequal constants");
test_constant<int16_t, custom_greaterthan_constants<int16_t> >(data16,SIZE,"int16_t greater than constants");
test_constant<int16_t, custom_lessthan_constants<int16_t> >(data16,SIZE,"int16_t less than constants");
test_constant<int16_t, custom_greaterthanequal_constants<int16_t> >(data16,SIZE,"int16_t greater than equal constants");
test_constant<int16_t, custom_lessthanequal_constants<int16_t> >(data16,SIZE,"int16_t less than equal constants");
test_constant<int16_t, custom_and_constants<int16_t> >(data16,SIZE,"int16_t and constants");
test_constant<int16_t, custom_or_constants<int16_t> >(data16,SIZE,"int16_t or constants");
test_constant<int16_t, custom_xor_constants<int16_t> >(data16,SIZE,"int16_t xor constants");
summarize("int16_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<int16_t, custom_constant_add<int16_t> >(data16,SIZE,"int16_t constant add");
test_constant<int16_t, custom_multiple_constant_add<int16_t> >(data16,SIZE,"int16_t multiple constant adds");
test_constant<int16_t, custom_constant_sub<int16_t> >(data16,SIZE,"int16_t constant subtract");
test_constant<int16_t, custom_multiple_constant_sub<int16_t> >(data16,SIZE,"int16_t multiple constant subtracts");
test_constant<int16_t, custom_constant_multiply<int16_t> >(data16,SIZE,"int16_t constant multiply");
test_constant<int16_t, custom_multiple_constant_multiply<int16_t> >(data16,SIZE,"int16_t multiple constant multiplies");
test_constant<int16_t, custom_multiple_constant_multiply2<int16_t> >(data16,SIZE,"int16_t multiple constant multiply2");
test_constant<int16_t, custom_constant_divide<int16_t> >(data16,SIZE,"int16_t constant divide");
test_constant<int16_t, custom_multiple_constant_divide<int16_t> >(data16,SIZE,"int16_t multiple constant divides");
test_constant<int16_t, custom_multiple_constant_divide2<int16_t> >(data16,SIZE,"int16_t multiple constant divide2");
test_constant<int16_t, custom_multiple_constant_mixed<int16_t> >(data16,SIZE,"int16_t multiple constant mixed");
test_constant<int16_t, custom_constant_and<int16_t> >(data16,SIZE,"int16_t constant and");
test_constant<int16_t, custom_multiple_constant_and<int16_t> >(data16,SIZE,"int16_t multiple constant and");
test_constant<int16_t, custom_constant_or<int16_t> >(data16,SIZE,"int16_t constant or");
test_constant<int16_t, custom_multiple_constant_or<int16_t> >(data16,SIZE,"int16_t multiple constant or");
test_constant<int16_t, custom_constant_xor<int16_t> >(data16,SIZE,"int16_t constant xor");
test_constant<int16_t, custom_multiple_constant_xor<int16_t> >(data16,SIZE,"int16_t multiple constant xor");
summarize("int16_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// unsigned16
::fill(data16unsigned, data16unsigned+SIZE, uint16_t(init_value));
iterations = base_iterations;
test_constant<uint16_t, custom_two<uint16_t> >(data16unsigned,SIZE,"uint16_t constant");
test_constant<uint16_t, custom_add_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t add constants");
test_constant<uint16_t, custom_sub_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t subtract constants");
test_constant<uint16_t, custom_multiply_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t multiply constants");
test_constant<uint16_t, custom_divide_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t divide constants");
test_constant<uint16_t, custom_mod_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t mod constants");
test_constant<uint16_t, custom_equal_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t equal constants");
test_constant<uint16_t, custom_notequal_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t notequal constants");
test_constant<uint16_t, custom_greaterthan_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t greater than constants");
test_constant<uint16_t, custom_lessthan_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t less than constants");
test_constant<uint16_t, custom_greaterthanequal_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t greater than equal constants");
test_constant<uint16_t, custom_lessthanequal_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t less than equal constants");
test_constant<uint16_t, custom_and_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t and constants");
test_constant<uint16_t, custom_or_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t or constants");
test_constant<uint16_t, custom_xor_constants<uint16_t> >(data16unsigned,SIZE,"uint16_t xor constants");
summarize("uint16_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<uint16_t, custom_constant_add<uint16_t> >(data16unsigned,SIZE,"uint16_t constant add");
test_constant<uint16_t, custom_multiple_constant_add<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant adds");
test_constant<uint16_t, custom_constant_sub<uint16_t> >(data16unsigned,SIZE,"uint16_t constant subtract");
test_constant<uint16_t, custom_multiple_constant_sub<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant subtracts");
test_constant<uint16_t, custom_constant_multiply<uint16_t> >(data16unsigned,SIZE,"uint16_t constant multiply");
test_constant<uint16_t, custom_multiple_constant_multiply<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant multiplies");
test_constant<uint16_t, custom_multiple_constant_multiply2<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant multiply2");
test_constant<uint16_t, custom_constant_divide<uint16_t> >(data16unsigned,SIZE,"uint16_t constant divide");
test_constant<uint16_t, custom_multiple_constant_divide<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant divides");
test_constant<uint16_t, custom_multiple_constant_divide2<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant divide2");
test_constant<uint16_t, custom_multiple_constant_mixed<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant mixed");
test_constant<uint16_t, custom_constant_and<uint16_t> >(data16unsigned,SIZE,"uint16_t constant and");
test_constant<uint16_t, custom_multiple_constant_and<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant and");
test_constant<uint16_t, custom_constant_or<uint16_t> >(data16unsigned,SIZE,"uint16_t constant or");
test_constant<uint16_t, custom_multiple_constant_or<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant or");
test_constant<uint16_t, custom_constant_xor<uint16_t> >(data16unsigned,SIZE,"uint16_t constant xor");
test_constant<uint16_t, custom_multiple_constant_xor<uint16_t> >(data16unsigned,SIZE,"uint16_t multiple constant xor");
summarize("uint16_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// int32_t
::fill(data32, data32+SIZE, int32_t(init_value));
iterations = base_iterations;
test_constant<int32_t, custom_two<int32_t> >(data32,SIZE,"int32_t constant");
test_constant<int32_t, custom_add_constants<int32_t> >(data32,SIZE,"int32_t add constants");
test_constant<int32_t, custom_sub_constants<int32_t> >(data32,SIZE,"int32_t subtract constants");
test_constant<int32_t, custom_multiply_constants<int32_t> >(data32,SIZE,"int32_t multiply constants");
test_constant<int32_t, custom_divide_constants<int32_t> >(data32,SIZE,"int32_t divide constants");
test_constant<int32_t, custom_mod_constants<int32_t> >(data32,SIZE,"int32_t mod constants");
test_constant<int32_t, custom_equal_constants<int32_t> >(data32,SIZE,"int32_t equal constants");
test_constant<int32_t, custom_notequal_constants<int32_t> >(data32,SIZE,"int32_t notequal constants");
test_constant<int32_t, custom_greaterthan_constants<int32_t> >(data32,SIZE,"int32_t greater than constants");
test_constant<int32_t, custom_lessthan_constants<int32_t> >(data32,SIZE,"int32_t less than constants");
test_constant<int32_t, custom_greaterthanequal_constants<int32_t> >(data32,SIZE,"int32_t greater than equal constants");
test_constant<int32_t, custom_lessthanequal_constants<int32_t> >(data32,SIZE,"int32_t less than equal constants");
test_constant<int32_t, custom_and_constants<int32_t> >(data32,SIZE,"int32_t and constants");
test_constant<int32_t, custom_or_constants<int32_t> >(data32,SIZE,"int32_t or constants");
test_constant<int32_t, custom_xor_constants<int32_t> >(data32,SIZE,"int32_t xor constants");
summarize("int32_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<int32_t, custom_constant_add<int32_t> >(data32,SIZE,"int32_t constant add");
test_constant<int32_t, custom_multiple_constant_add<int32_t> >(data32,SIZE,"int32_t multiple constant adds");
test_constant<int32_t, custom_constant_sub<int32_t> >(data32,SIZE,"int32_t constant subtract");
test_constant<int32_t, custom_multiple_constant_sub<int32_t> >(data32,SIZE,"int32_t multiple constant subtracts");
test_constant<int32_t, custom_constant_multiply<int32_t> >(data32,SIZE,"int32_t constant multiply");
test_constant<int32_t, custom_multiple_constant_multiply<int32_t> >(data32,SIZE,"int32_t multiple constant multiplies");
test_constant<int32_t, custom_multiple_constant_multiply2<int32_t> >(data32,SIZE,"int32_t multiple constant multiply2");
test_constant<int32_t, custom_constant_divide<int32_t> >(data32,SIZE,"int32_t constant divide");
test_constant<int32_t, custom_multiple_constant_divide<int32_t> >(data32,SIZE,"int32_t multiple constant divides");
test_constant<int32_t, custom_multiple_constant_divide2<int32_t> >(data32,SIZE,"int32_t multiple constant divide2");
test_constant<int32_t, custom_multiple_constant_mixed<int32_t> >(data32,SIZE,"int32_t multiple constant mixed");
test_constant<int32_t, custom_constant_and<int32_t> >(data32,SIZE,"int32_t constant and");
test_constant<int32_t, custom_multiple_constant_and<int32_t> >(data32,SIZE,"int32_t multiple constant and");
test_constant<int32_t, custom_constant_or<int32_t> >(data32,SIZE,"int32_t constant or");
test_constant<int32_t, custom_multiple_constant_or<int32_t> >(data32,SIZE,"int32_t multiple constant or");
test_constant<int32_t, custom_constant_xor<int32_t> >(data32,SIZE,"int32_t constant xor");
test_constant<int32_t, custom_multiple_constant_xor<int32_t> >(data32,SIZE,"int32_t multiple constant xor");
summarize("int32_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// unsigned32
::fill(data32unsigned, data32unsigned+SIZE, uint32_t(init_value));
iterations = base_iterations;
test_constant<uint32_t, custom_two<uint32_t> >(data32unsigned,SIZE,"uint32_t constant");
test_constant<uint32_t, custom_add_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t add constants");
test_constant<uint32_t, custom_sub_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t subtract constants");
test_constant<uint32_t, custom_multiply_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t multiply constants");
test_constant<uint32_t, custom_divide_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t divide constants");
test_constant<uint32_t, custom_mod_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t mod constants");
test_constant<uint32_t, custom_equal_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t equal constants");
test_constant<uint32_t, custom_notequal_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t notequal constants");
test_constant<uint32_t, custom_greaterthan_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t greater than constants");
test_constant<uint32_t, custom_lessthan_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t less than constants");
test_constant<uint32_t, custom_greaterthanequal_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t greater than equal constants");
test_constant<uint32_t, custom_lessthanequal_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t less than equal constants");
test_constant<uint32_t, custom_and_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t and constants");
test_constant<uint32_t, custom_or_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t or constants");
test_constant<uint32_t, custom_xor_constants<uint32_t> >(data32unsigned,SIZE,"uint32_t xor constants");
summarize("uint32_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<uint32_t, custom_constant_add<uint32_t> >(data32unsigned,SIZE,"uint32_t constant add");
test_constant<uint32_t, custom_multiple_constant_add<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant adds");
test_constant<uint32_t, custom_constant_sub<uint32_t> >(data32unsigned,SIZE,"uint32_t constant subtract");
test_constant<uint32_t, custom_multiple_constant_sub<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant subtracts");
test_constant<uint32_t, custom_constant_multiply<uint32_t> >(data32unsigned,SIZE,"uint32_t constant multiply");
test_constant<uint32_t, custom_multiple_constant_multiply<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant multiplies");
test_constant<uint32_t, custom_multiple_constant_multiply2<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant multiply2");
test_constant<uint32_t, custom_constant_divide<uint32_t> >(data32unsigned,SIZE,"uint32_t constant divide");
test_constant<uint32_t, custom_multiple_constant_divide<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant divides");
test_constant<uint32_t, custom_multiple_constant_divide2<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant divide2");
test_constant<uint32_t, custom_multiple_constant_mixed<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant mixed");
test_constant<uint32_t, custom_constant_and<uint32_t> >(data32unsigned,SIZE,"uint32_t constant and");
test_constant<uint32_t, custom_multiple_constant_and<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant and");
test_constant<uint32_t, custom_constant_or<uint32_t> >(data32unsigned,SIZE,"uint32_t constant or");
test_constant<uint32_t, custom_multiple_constant_or<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant or");
test_constant<uint32_t, custom_constant_xor<uint32_t> >(data32unsigned,SIZE,"uint32_t constant xor");
test_constant<uint32_t, custom_multiple_constant_xor<uint32_t> >(data32unsigned,SIZE,"uint32_t multiple constant xor");
summarize("uint32_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// int64_t
::fill(data64, data64+SIZE, int64_t(init_value));
iterations = base_iterations;
test_constant<int64_t, custom_two<int64_t> >(data64,SIZE,"int64_t constant");
test_constant<int64_t, custom_add_constants<int64_t> >(data64,SIZE,"int64_t add constants");
test_constant<int64_t, custom_sub_constants<int64_t> >(data64,SIZE,"int64_t subtract constants");
test_constant<int64_t, custom_multiply_constants<int64_t> >(data64,SIZE,"int64_t multiply constants");
test_constant<int64_t, custom_divide_constants<int64_t> >(data64,SIZE,"int64_t divide constants");
test_constant<int64_t, custom_mod_constants<int64_t> >(data64,SIZE,"int64_t mod constants");
test_constant<int64_t, custom_equal_constants<int64_t> >(data64,SIZE,"int64_t equal constants");
test_constant<int64_t, custom_notequal_constants<int64_t> >(data64,SIZE,"int64_t notequal constants");
test_constant<int64_t, custom_greaterthan_constants<int64_t> >(data64,SIZE,"int64_t greater than constants");
test_constant<int64_t, custom_lessthan_constants<int64_t> >(data64,SIZE,"int64_t less than constants");
test_constant<int64_t, custom_greaterthanequal_constants<int64_t> >(data64,SIZE,"int64_t greater than equal constants");
test_constant<int64_t, custom_lessthanequal_constants<int64_t> >(data64,SIZE,"int64_t less than equal constants");
test_constant<int64_t, custom_and_constants<int64_t> >(data64,SIZE,"int64_t and constants");
test_constant<int64_t, custom_or_constants<int64_t> >(data64,SIZE,"int64_t or constants");
test_constant<int64_t, custom_xor_constants<int64_t> >(data64,SIZE,"int64_t xor constants");
summarize("int64_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<int64_t, custom_constant_add<int64_t> >(data64,SIZE,"int64_t constant add");
test_constant<int64_t, custom_multiple_constant_add<int64_t> >(data64,SIZE,"int64_t multiple constant adds");
test_constant<int64_t, custom_constant_sub<int64_t> >(data64,SIZE,"int64_t constant subtract");
test_constant<int64_t, custom_multiple_constant_sub<int64_t> >(data64,SIZE,"int64_t multiple constant subtracts");
test_constant<int64_t, custom_constant_multiply<int64_t> >(data64,SIZE,"int64_t constant multiply");
test_constant<int64_t, custom_multiple_constant_multiply<int64_t> >(data64,SIZE,"int64_t multiple constant multiplies");
test_constant<int64_t, custom_multiple_constant_multiply2<int64_t> >(data64,SIZE,"int64_t multiple constant multiply2");
test_constant<int64_t, custom_constant_divide<int64_t> >(data64,SIZE,"int64_t constant divide");
test_constant<int64_t, custom_multiple_constant_divide<int64_t> >(data64,SIZE,"int64_t multiple constant divides");
test_constant<int64_t, custom_multiple_constant_divide2<int64_t> >(data64,SIZE,"int64_t multiple constant divide2");
test_constant<int64_t, custom_multiple_constant_mixed<int64_t> >(data64,SIZE,"int64_t multiple constant mixed");
test_constant<int64_t, custom_constant_and<int64_t> >(data64,SIZE,"int64_t constant and");
test_constant<int64_t, custom_multiple_constant_and<int64_t> >(data64,SIZE,"int64_t multiple constant and");
test_constant<int64_t, custom_constant_or<int64_t> >(data64,SIZE,"int64_t constant or");
test_constant<int64_t, custom_multiple_constant_or<int64_t> >(data64,SIZE,"int64_t multiple constant or");
test_constant<int64_t, custom_constant_xor<int64_t> >(data64,SIZE,"int64_t constant xor");
test_constant<int64_t, custom_multiple_constant_xor<int64_t> >(data64,SIZE,"int64_t multiple constant xor");
summarize("int64_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// unsigned64
::fill(data64unsigned, data64unsigned+SIZE, uint64_t(init_value));
iterations = base_iterations;
test_constant<uint64_t, custom_two<uint64_t> >(data64unsigned,SIZE,"uint64_t constant");
test_constant<uint64_t, custom_add_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t add constants");
test_constant<uint64_t, custom_sub_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t subtract constants");
test_constant<uint64_t, custom_multiply_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t multiply constants");
test_constant<uint64_t, custom_divide_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t divide constants");
test_constant<uint64_t, custom_mod_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t mod constants");
test_constant<uint64_t, custom_equal_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t equal constants");
test_constant<uint64_t, custom_notequal_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t notequal constants");
test_constant<uint64_t, custom_greaterthan_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t greater than constants");
test_constant<uint64_t, custom_lessthan_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t less than constants");
test_constant<uint64_t, custom_greaterthanequal_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t greater than equal constants");
test_constant<uint64_t, custom_lessthanequal_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t less than equal constants");
test_constant<uint64_t, custom_and_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t and constants");
test_constant<uint64_t, custom_or_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t or constants");
test_constant<uint64_t, custom_xor_constants<uint64_t> >(data64unsigned,SIZE,"uint64_t xor constants");
summarize("uint64_t simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<uint64_t, custom_constant_add<uint64_t> >(data64unsigned,SIZE,"uint64_t constant add");
test_constant<uint64_t, custom_multiple_constant_add<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant adds");
test_constant<uint64_t, custom_constant_sub<uint64_t> >(data64unsigned,SIZE,"uint64_t constant subtract");
test_constant<uint64_t, custom_multiple_constant_sub<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant subtracts");
test_constant<uint64_t, custom_constant_multiply<uint64_t> >(data64unsigned,SIZE,"uint64_t constant multiply");
test_constant<uint64_t, custom_multiple_constant_multiply<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant multiplies");
test_constant<uint64_t, custom_multiple_constant_multiply2<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant multiply2");
test_constant<uint64_t, custom_constant_divide<uint64_t> >(data64unsigned,SIZE,"uint64_t constant divide");
test_constant<uint64_t, custom_multiple_constant_divide<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant divides");
test_constant<uint64_t, custom_multiple_constant_divide2<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant divide2");
test_constant<uint64_t, custom_multiple_constant_mixed<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant mixed");
test_constant<uint64_t, custom_constant_and<uint64_t> >(data64unsigned,SIZE,"uint64_t constant and");
test_constant<uint64_t, custom_multiple_constant_and<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant and");
test_constant<uint64_t, custom_constant_or<uint64_t> >(data64unsigned,SIZE,"uint64_t constant or");
test_constant<uint64_t, custom_multiple_constant_or<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant or");
test_constant<uint64_t, custom_constant_xor<uint64_t> >(data64unsigned,SIZE,"uint64_t constant xor");
test_constant<uint64_t, custom_multiple_constant_xor<uint64_t> >(data64unsigned,SIZE,"uint64_t multiple constant xor");
summarize("uint64_t constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// float
::fill(dataFloat, dataFloat+SIZE, float(init_value));
iterations = base_iterations;
test_constant<float, custom_two<float> >(dataFloat,SIZE,"float constant");
test_constant<float, custom_add_constants<float> >(dataFloat,SIZE,"float add constants");
test_constant<float, custom_sub_constants<float> >(dataFloat,SIZE,"float subtract constants");
test_constant<float, custom_multiply_constants<float> >(dataFloat,SIZE,"float multiply constants");
test_constant<float, custom_divide_constants<float> >(dataFloat,SIZE,"float divide constants");
summarize("float simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<float, custom_constant_add<float> >(dataFloat,SIZE,"float constant add");
test_constant<float, custom_multiple_constant_add<float> >(dataFloat,SIZE,"float multiple constant adds");
test_constant<float, custom_constant_sub<float> >(dataFloat,SIZE,"float constant subtract");
test_constant<float, custom_multiple_constant_sub<float> >(dataFloat,SIZE,"float multiple constant subtracts");
test_constant<float, custom_constant_multiply<float> >(dataFloat,SIZE,"float constant multiply");
test_constant<float, custom_multiple_constant_multiply<float> >(dataFloat,SIZE,"float multiple constant multiplies");
test_constant<float, custom_multiple_constant_multiply2<float> >(dataFloat,SIZE,"float multiple constant multiply2");
test_constant<float, custom_constant_divide<float> >(dataFloat,SIZE,"float constant divide");
test_constant<float, custom_multiple_constant_divide<float> >(dataFloat,SIZE,"float multiple constant divides");
test_constant<float, custom_multiple_constant_divide2<float> >(dataFloat,SIZE,"float multiple constant divide2");
test_constant<float, custom_multiple_constant_mixed<float> >(dataFloat,SIZE,"float multiple constant mixed");
summarize("float constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
// double
::fill(dataDouble, dataDouble+SIZE, double(init_value));
iterations = base_iterations;
test_constant<double, custom_two<double> >(dataDouble,SIZE,"double constant");
test_constant<double, custom_add_constants<double> >(dataDouble,SIZE,"double add constants");
test_constant<double, custom_sub_constants<double> >(dataDouble,SIZE,"double subtract constants");
test_constant<double, custom_multiply_constants<double> >(dataDouble,SIZE,"double multiply constants");
test_constant<double, custom_divide_constants<double> >(dataDouble,SIZE,"double divide constants");
summarize("double simple constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
iterations = base_iterations / 10;
test_constant<double, custom_constant_add<double> >(dataDouble,SIZE,"double constant add");
test_constant<double, custom_multiple_constant_add<double> >(dataDouble,SIZE,"double multiple constant adds");
test_constant<double, custom_constant_sub<double> >(dataDouble,SIZE,"double constant subtract");
test_constant<double, custom_multiple_constant_sub<double> >(dataDouble,SIZE,"double multiple constant subtracts");
test_constant<double, custom_constant_multiply<double> >(dataDouble,SIZE,"double constant multiply");
test_constant<double, custom_multiple_constant_multiply<double> >(dataDouble,SIZE,"double multiple constant multiplies");
test_constant<double, custom_multiple_constant_multiply2<double> >(dataDouble,SIZE,"double multiple constant multiply2");
test_constant<double, custom_constant_divide<double> >(dataDouble,SIZE,"double constant divide");
test_constant<double, custom_multiple_constant_divide<double> >(dataDouble,SIZE,"double multiple constant divides");
test_constant<double, custom_multiple_constant_divide2<double> >(dataDouble,SIZE,"double multiple constant divide2");
test_constant<double, custom_multiple_constant_mixed<double> >(dataDouble,SIZE,"double multiple constant mixed");
summarize("double constant folding", SIZE, iterations, kDontShowGMeans, kDontShowPenalty );
return 0;
}
// the end
/******************************************************************************/
/******************************************************************************/
[-- Attachment #5: report46 --]
[-- Type: text/plain, Size: 25184 bytes --]
./simple_types_constant_folding
test description absolute operations ratio with
number time per second test0
0 "int8_t constant" 0.00 sec inf M nan
1 "int8_t add constants" 0.00 sec inf M nan
2 "int8_t subtract constants" 0.00 sec inf M nan
3 "int8_t multiply constants" 0.00 sec inf M nan
4 "int8_t divide constants" 0.00 sec inf M nan
5 "int8_t mod constants" 0.00 sec inf M nan
6 "int8_t equal constants" 0.00 sec inf M nan
7 "int8_t notequal constants" 0.00 sec inf M nan
8 "int8_t greater than constants" 0.00 sec inf M nan
9 "int8_t less than constants" 0.00 sec inf M nan
10 "int8_t greater than equal constants" 0.00 sec inf M nan
11 "int8_t less than equal constants" 0.00 sec inf M nan
12 "int8_t and constants" 0.00 sec inf M nan
13 "int8_t or constants" 0.00 sec inf M nan
14 "int8_t xor constants" 0.00 sec inf M nan
Total absolute time for int8_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "int8_t constant add" 2.84 sec 563.38 M 1.00
1 "int8_t multiple constant adds" 2.85 sec 561.40 M 1.00
2 "int8_t constant subtract" 2.84 sec 563.38 M 1.00
3 "int8_t multiple constant subtracts" 2.85 sec 561.40 M 1.00
4 "int8_t constant multiply" 3.35 sec 477.61 M 1.18
5 "int8_t multiple constant multiplies" 3.34 sec 479.04 M 1.18
6 "int8_t multiple constant multiply2" 2.85 sec 561.40 M 1.00
7 "int8_t constant divide" 3.86 sec 414.51 M 1.36
8 "int8_t multiple constant divides" 6.03 sec 265.34 M 2.12
9 "int8_t multiple constant divide2" 2.85 sec 561.40 M 1.00
10 "int8_t multiple constant mixed" 0.97 sec 1649.48 M 0.34
11 "int8_t constant and" 1.44 sec 1111.11 M 0.51
12 "int8_t multiple constant and" 1.44 sec 1111.11 M 0.51
13 "int8_t constant or" 1.44 sec 1111.11 M 0.51
14 "int8_t multiple constant or" 1.44 sec 1111.11 M 0.51
15 "int8_t constant xor" 1.46 sec 1095.89 M 0.51
16 "int8_t multiple constant xor" 1.47 sec 1088.44 M 0.52
Total absolute time for int8_t constant folding: 43.32 sec
test description absolute operations ratio with
number time per second test0
0 "uint8_t constant" 0.00 sec inf M nan
1 "uint8_t add constants" 0.00 sec inf M nan
2 "uint8_t subtract constants" 0.00 sec inf M nan
3 "uint8_t multiply constants" 0.00 sec inf M nan
4 "uint8_t divide constants" 0.00 sec inf M nan
5 "uint8_t mod constants" 0.00 sec inf M nan
6 "uint8_t equal constants" 0.00 sec inf M nan
7 "uint8_t notequal constants" 0.00 sec inf M nan
8 "uint8_t greater than constants" 0.00 sec inf M nan
9 "uint8_t less than constants" 0.00 sec inf M nan
10 "uint8_t greater than equal constants" 0.00 sec inf M nan
11 "uint8_t less than equal constants" 0.00 sec inf M nan
12 "uint8_t and constants" 0.00 sec inf M nan
13 "uint8_t or constants" 0.00 sec inf M nan
14 "uint8_t xor constants" 0.00 sec inf M nan
Total absolute time for uint8_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "uint8_t constant add" 0.11 sec 14545.45 M 1.00
1 "uint8_t multiple constant adds" 0.10 sec 16000.00 M 0.91
2 "uint8_t constant subtract" 0.10 sec 16000.00 M 0.91
3 "uint8_t multiple constant subtracts" 0.10 sec 16000.00 M 0.91
4 "uint8_t constant multiply" 0.51 sec 3137.25 M 4.64
5 "uint8_t multiple constant multiplies" 0.51 sec 3137.25 M 4.64
6 "uint8_t multiple constant multiply2" 0.09 sec 17777.78 M 0.82
7 "uint8_t constant divide" 3.35 sec 477.61 M 30.45
8 "uint8_t multiple constant divides" 3.35 sec 477.61 M 30.45
9 "uint8_t multiple constant divide2" 0.10 sec 16000.00 M 0.91
10 "uint8_t multiple constant mixed" 0.06 sec 26666.67 M 0.55
11 "uint8_t constant and" 0.10 sec 16000.00 M 0.91
12 "uint8_t multiple constant and" 0.10 sec 16000.00 M 0.91
13 "uint8_t constant or" 0.10 sec 16000.00 M 0.91
14 "uint8_t multiple constant or" 0.10 sec 16000.00 M 0.91
15 "uint8_t constant xor" 0.10 sec 16000.00 M 0.91
16 "uint8_t multiple constant xor" 0.10 sec 16000.00 M 0.91
Total absolute time for uint8_t constant folding: 8.98 sec
test description absolute operations ratio with
number time per second test0
0 "int16_t constant" 0.00 sec inf M nan
1 "int16_t add constants" 0.00 sec inf M nan
2 "int16_t subtract constants" 0.00 sec inf M nan
3 "int16_t multiply constants" 0.00 sec inf M nan
4 "int16_t divide constants" 0.00 sec inf M nan
5 "int16_t mod constants" 0.00 sec inf M nan
6 "int16_t equal constants" 0.00 sec inf M nan
7 "int16_t notequal constants" 0.00 sec inf M nan
8 "int16_t greater than constants" 0.00 sec inf M nan
9 "int16_t less than constants" 0.00 sec inf M nan
10 "int16_t greater than equal constants" 0.00 sec inf M nan
11 "int16_t less than equal constants" 0.00 sec inf M nan
12 "int16_t and constants" 0.00 sec inf M nan
13 "int16_t or constants" 0.00 sec inf M nan
14 "int16_t xor constants" 0.00 sec inf M nan
Total absolute time for int16_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "int16_t constant add" 2.85 sec 561.40 M 1.00
1 "int16_t multiple constant adds" 2.84 sec 563.38 M 1.00
2 "int16_t constant subtract" 2.85 sec 561.40 M 1.00
3 "int16_t multiple constant subtracts" 2.84 sec 563.38 M 1.00
4 "int16_t constant multiply" 3.35 sec 477.61 M 1.18
5 "int16_t multiple constant multiplies" 3.36 sec 476.19 M 1.18
6 "int16_t multiple constant multiply2" 2.87 sec 557.49 M 1.01
7 "int16_t constant divide" 3.88 sec 412.37 M 1.36
8 "int16_t multiple constant divides" 4.03 sec 397.02 M 1.41
9 "int16_t multiple constant divide2" 2.84 sec 563.38 M 1.00
10 "int16_t multiple constant mixed" 0.97 sec 1649.48 M 0.34
11 "int16_t constant and" 1.44 sec 1111.11 M 0.51
12 "int16_t multiple constant and" 1.44 sec 1111.11 M 0.51
13 "int16_t constant or" 1.44 sec 1111.11 M 0.51
14 "int16_t multiple constant or" 1.44 sec 1111.11 M 0.51
15 "int16_t constant xor" 1.43 sec 1118.88 M 0.50
16 "int16_t multiple constant xor" 1.44 sec 1111.11 M 0.51
Total absolute time for int16_t constant folding: 41.31 sec
test description absolute operations ratio with
number time per second test0
0 "uint16_t constant" 0.00 sec inf M nan
1 "uint16_t add constants" 0.00 sec inf M nan
2 "uint16_t subtract constants" 0.00 sec inf M nan
3 "uint16_t multiply constants" 0.00 sec inf M nan
4 "uint16_t divide constants" 0.00 sec inf M nan
5 "uint16_t mod constants" 0.00 sec inf M nan
6 "uint16_t equal constants" 0.00 sec inf M nan
7 "uint16_t notequal constants" 0.00 sec inf M nan
8 "uint16_t greater than constants" 0.00 sec inf M nan
9 "uint16_t less than constants" 0.00 sec inf M nan
10 "uint16_t greater than equal constants" 0.00 sec inf M nan
11 "uint16_t less than equal constants" 0.00 sec inf M nan
12 "uint16_t and constants" 0.00 sec inf M nan
13 "uint16_t or constants" 0.00 sec inf M nan
14 "uint16_t xor constants" 0.00 sec inf M nan
Total absolute time for uint16_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "uint16_t constant add" 0.20 sec 8000.00 M 1.00
1 "uint16_t multiple constant adds" 0.20 sec 8000.00 M 1.00
2 "uint16_t constant subtract" 0.19 sec 8421.05 M 0.95
3 "uint16_t multiple constant subtracts" 0.20 sec 8000.00 M 1.00
4 "uint16_t constant multiply" 0.22 sec 7272.73 M 1.10
5 "uint16_t multiple constant multiplies" 0.22 sec 7272.73 M 1.10
6 "uint16_t multiple constant multiply2" 0.20 sec 8000.00 M 1.00
7 "uint16_t constant divide" 1.82 sec 879.12 M 9.10
8 "uint16_t multiple constant divides" 1.82 sec 879.12 M 9.10
9 "uint16_t multiple constant divide2" 0.20 sec 8000.00 M 1.00
10 "uint16_t multiple constant mixed" 0.17 sec 9411.76 M 0.85
11 "uint16_t constant and" 0.19 sec 8421.05 M 0.95
12 "uint16_t multiple constant and" 0.19 sec 8421.05 M 0.95
13 "uint16_t constant or" 0.20 sec 8000.00 M 1.00
14 "uint16_t multiple constant or" 0.19 sec 8421.05 M 0.95
15 "uint16_t constant xor" 0.20 sec 8000.00 M 1.00
16 "uint16_t multiple constant xor" 0.19 sec 8421.05 M 0.95
Total absolute time for uint16_t constant folding: 6.60 sec
test description absolute operations ratio with
number time per second test0
0 "int32_t constant" 0.00 sec inf M nan
1 "int32_t add constants" 0.00 sec inf M nan
2 "int32_t subtract constants" 0.00 sec inf M nan
3 "int32_t multiply constants" 0.00 sec inf M nan
4 "int32_t divide constants" 0.00 sec inf M nan
5 "int32_t mod constants" 0.00 sec inf M nan
6 "int32_t equal constants" 0.00 sec inf M nan
7 "int32_t notequal constants" 0.00 sec inf M nan
8 "int32_t greater than constants" 0.00 sec inf M nan
9 "int32_t less than constants" 0.00 sec inf M nan
10 "int32_t greater than equal constants" 0.00 sec inf M nan
11 "int32_t less than equal constants" 0.00 sec inf M nan
12 "int32_t and constants" 0.00 sec inf M nan
13 "int32_t or constants" 0.00 sec inf M nan
14 "int32_t xor constants" 0.00 sec inf M nan
Total absolute time for int32_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "int32_t constant add" 0.39 sec 4102.56 M 1.00
1 "int32_t multiple constant adds" 0.34 sec 4705.88 M 0.87
2 "int32_t constant subtract" 0.38 sec 4210.53 M 0.97
3 "int32_t multiple constant subtracts" 0.39 sec 4102.56 M 1.00
4 "int32_t constant multiply" 1.40 sec 1142.86 M 3.59
5 "int32_t multiple constant multiplies" 1.41 sec 1134.75 M 3.62
6 "int32_t multiple constant multiply2" 0.39 sec 4102.56 M 1.00
7 "int32_t constant divide" 3.03 sec 528.05 M 7.77
8 "int32_t multiple constant divides" 3.31 sec 483.38 M 8.49
9 "int32_t multiple constant divide2" 0.33 sec 4848.48 M 0.85
10 "int32_t multiple constant mixed" 0.26 sec 6153.85 M 0.67
11 "int32_t constant and" 0.38 sec 4210.53 M 0.97
12 "int32_t multiple constant and" 0.34 sec 4705.88 M 0.87
13 "int32_t constant or" 0.38 sec 4210.53 M 0.97
14 "int32_t multiple constant or" 0.34 sec 4705.88 M 0.87
15 "int32_t constant xor" 0.34 sec 4705.88 M 0.87
16 "int32_t multiple constant xor" 0.34 sec 4705.88 M 0.87
Total absolute time for int32_t constant folding: 13.75 sec
test description absolute operations ratio with
number time per second test0
0 "uint32_t constant" 0.00 sec inf M nan
1 "uint32_t add constants" 0.00 sec inf M nan
2 "uint32_t subtract constants" 0.00 sec inf M nan
3 "uint32_t multiply constants" 0.00 sec inf M nan
4 "uint32_t divide constants" 0.00 sec inf M nan
5 "uint32_t mod constants" 0.00 sec inf M nan
6 "uint32_t equal constants" 0.00 sec inf M nan
7 "uint32_t notequal constants" 0.00 sec inf M nan
8 "uint32_t greater than constants" 0.00 sec inf M nan
9 "uint32_t less than constants" 0.00 sec inf M nan
10 "uint32_t greater than equal constants" 0.00 sec inf M nan
11 "uint32_t less than equal constants" 0.00 sec inf M nan
12 "uint32_t and constants" 0.00 sec inf M nan
13 "uint32_t or constants" 0.00 sec inf M nan
14 "uint32_t xor constants" 0.00 sec inf M nan
Total absolute time for uint32_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "uint32_t constant add" 0.34 sec 4705.88 M 1.00
1 "uint32_t multiple constant adds" 0.33 sec 4848.48 M 0.97
2 "uint32_t constant subtract" 0.34 sec 4705.88 M 1.00
3 "uint32_t multiple constant subtracts" 0.34 sec 4705.88 M 1.00
4 "uint32_t constant multiply" 1.40 sec 1142.86 M 4.12
5 "uint32_t multiple constant multiplies" 1.37 sec 1167.88 M 4.03
6 "uint32_t multiple constant multiply2" 0.33 sec 4848.48 M 0.97
7 "uint32_t constant divide" 2.63 sec 608.37 M 7.74
8 "uint32_t multiple constant divides" 2.65 sec 603.77 M 7.79
9 "uint32_t multiple constant divide2" 0.33 sec 4848.48 M 0.97
10 "uint32_t multiple constant mixed" 0.25 sec 6400.00 M 0.74
11 "uint32_t constant and" 0.34 sec 4705.88 M 1.00
12 "uint32_t multiple constant and" 0.34 sec 4705.88 M 1.00
13 "uint32_t constant or" 0.34 sec 4705.88 M 1.00
14 "uint32_t multiple constant or" 0.34 sec 4705.88 M 1.00
15 "uint32_t constant xor" 0.33 sec 4848.48 M 0.97
16 "uint32_t multiple constant xor" 0.34 sec 4705.88 M 1.00
Total absolute time for uint32_t constant folding: 12.34 sec
test description absolute operations ratio with
number time per second test0
0 "int64_t constant" 0.00 sec inf M nan
1 "int64_t add constants" 0.00 sec inf M nan
2 "int64_t subtract constants" 0.00 sec inf M nan
3 "int64_t multiply constants" 0.00 sec inf M nan
4 "int64_t divide constants" 0.00 sec inf M nan
5 "int64_t mod constants" 0.00 sec inf M nan
6 "int64_t equal constants" 0.00 sec inf M nan
7 "int64_t notequal constants" 0.00 sec inf M nan
8 "int64_t greater than constants" 0.00 sec inf M nan
9 "int64_t less than constants" 0.00 sec inf M nan
10 "int64_t greater than equal constants" 0.00 sec inf M nan
11 "int64_t less than equal constants" 0.00 sec inf M nan
12 "int64_t and constants" 0.00 sec inf M nan
13 "int64_t or constants" 0.00 sec inf M nan
14 "int64_t xor constants" 0.00 sec inf M nan
Total absolute time for int64_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "int64_t constant add" 1.06 sec 1509.43 M 1.00
1 "int64_t multiple constant adds" 1.05 sec 1523.81 M 0.99
2 "int64_t constant subtract" 1.06 sec 1509.43 M 1.00
3 "int64_t multiple constant subtracts" 1.06 sec 1509.43 M 1.00
4 "int64_t constant multiply" 2.55 sec 627.45 M 2.41
5 "int64_t multiple constant multiplies" 2.55 sec 627.45 M 2.41
6 "int64_t multiple constant multiply2" 1.06 sec 1509.43 M 1.00
7 "int64_t constant divide" 2.93 sec 546.08 M 2.76
8 "int64_t multiple constant divides" 3.29 sec 486.32 M 3.10
9 "int64_t multiple constant divide2" 1.06 sec 1509.43 M 1.00
10 "int64_t multiple constant mixed" 0.79 sec 2025.32 M 0.75
11 "int64_t constant and" 0.97 sec 1649.48 M 0.92
12 "int64_t multiple constant and" 0.97 sec 1649.48 M 0.92
13 "int64_t constant or" 0.96 sec 1666.67 M 0.91
14 "int64_t multiple constant or" 0.96 sec 1666.67 M 0.91
15 "int64_t constant xor" 0.98 sec 1632.65 M 0.92
16 "int64_t multiple constant xor" 0.97 sec 1649.48 M 0.92
Total absolute time for int64_t constant folding: 24.27 sec
test description absolute operations ratio with
number time per second test0
0 "uint64_t constant" 0.00 sec inf M nan
1 "uint64_t add constants" 0.00 sec inf M nan
2 "uint64_t subtract constants" 0.00 sec inf M nan
3 "uint64_t multiply constants" 0.00 sec inf M nan
4 "uint64_t divide constants" 0.00 sec inf M nan
5 "uint64_t mod constants" 0.00 sec inf M nan
6 "uint64_t equal constants" 0.00 sec inf M nan
7 "uint64_t notequal constants" 0.00 sec inf M nan
8 "uint64_t greater than constants" 0.00 sec inf M nan
9 "uint64_t less than constants" 0.00 sec inf M nan
10 "uint64_t greater than equal constants" 0.00 sec inf M nan
11 "uint64_t less than equal constants" 0.00 sec inf M nan
12 "uint64_t and constants" 0.00 sec inf M nan
13 "uint64_t or constants" 0.00 sec inf M nan
14 "uint64_t xor constants" 0.00 sec inf M nan
Total absolute time for uint64_t simple constant folding: 0.00 sec
test description absolute operations ratio with
number time per second test0
0 "uint64_t constant add" 1.06 sec 1509.43 M 1.00
1 "uint64_t multiple constant adds" 1.07 sec 1495.33 M 1.01
2 "uint64_t constant subtract" 1.06 sec 1509.43 M 1.00
3 "uint64_t multiple constant subtracts" 1.06 sec 1509.43 M 1.00
4 "uint64_t constant multiply" 2.58 sec 620.16 M 2.43
5 "uint64_t multiple constant multiplies" 2.56 sec 625.00 M 2.42
6 "uint64_t multiple constant multiply2" 1.06 sec 1509.43 M 1.00
7 "uint64_t constant divide" 2.68 sec 597.01 M 2.53
8 "uint64_t multiple constant divides" 2.68 sec 597.01 M 2.53
9 "uint64_t multiple constant divide2" 1.06 sec 1509.43 M 1.00
10 "uint64_t multiple constant mixed" 0.80 sec 2000.00 M 0.75
11 "uint64_t constant and" 0.97 sec 1649.48 M 0.92
12 "uint64_t multiple constant and" 0.96 sec 1666.67 M 0.91
13 "uint64_t constant or" 0.97 sec 1649.48 M 0.92
14 "uint64_t multiple constant or" 0.97 sec 1649.48 M 0.92
15 "uint64_t constant xor" 0.96 sec 1666.67 M 0.91
16 "uint64_t multiple constant xor" 0.97 sec 1649.48 M 0.92
Total absolute time for uint64_t constant folding: 23.47 sec
test description absolute operations ratio with
number time per second test0
0 "float constant" 20.09 sec 796.42 M 1.00
1 "float add constants" 20.10 sec 796.02 M 1.00
2 "float subtract constants" 20.15 sec 794.04 M 1.00
3 "float multiply constants" 20.13 sec 794.83 M 1.00
4 "float divide constants" 20.08 sec 796.81 M 1.00
Total absolute time for float simple constant folding: 100.55 sec
test description absolute operations ratio with
number time per second test0
0 "float constant add" 2.01 sec 796.02 M 1.00
1 "float multiple constant adds" 3.36 sec 476.19 M 1.67
2 "float constant subtract" 2.01 sec 796.02 M 1.00
3 "float multiple constant subtracts" 3.35 sec 477.61 M 1.67
4 "float constant multiply" 2.01 sec 796.02 M 1.00
5 "float multiple constant multiplies" 2.21 sec 723.98 M 1.10
6 "float multiple constant multiply2" 2.01 sec 796.02 M 1.00
7 "float constant divide" 11.55 sec 138.53 M 5.75
8 "float multiple constant divides" 22.80 sec 70.18 M 11.34
9 "float multiple constant divide2" 2.01 sec 796.02 M 1.00
10 "float multiple constant mixed" 2.11 sec 758.29 M 1.05
Total absolute time for float constant folding: 55.43 sec
test description absolute operations ratio with
number time per second test0
0 "double constant" 20.08 sec 796.81 M 1.00
1 "double add constants" 20.09 sec 796.42 M 1.00
2 "double subtract constants" 20.16 sec 793.65 M 1.00
3 "double multiply constants" 20.08 sec 796.81 M 1.00
4 "double divide constants" 20.08 sec 796.81 M 1.00
Total absolute time for double simple constant folding: 100.49 sec
test description absolute operations ratio with
number time per second test0
0 "double constant add" 2.03 sec 788.18 M 1.00
1 "double multiple constant adds" 3.35 sec 477.61 M 1.65
2 "double constant subtract" 2.03 sec 788.18 M 1.00
3 "double multiple constant subtracts" 3.36 sec 476.19 M 1.66
4 "double constant multiply" 2.01 sec 796.02 M 0.99
5 "double multiple constant multiplies" 2.33 sec 686.70 M 1.15
6 "double multiple constant multiply2" 2.03 sec 788.18 M 1.00
7 "double constant divide" 21.01 sec 76.15 M 10.35
8 "double multiple constant divides" 41.58 sec 38.48 M 20.48
9 "double multiple constant divide2" 2.03 sec 788.18 M 1.00
10 "double multiple constant mixed" 2.12 sec 754.72 M 1.04
Total absolute time for double constant folding: 83.88 sec
[-- Attachment #6: gmon46.prof --]
[-- Type: text/plain, Size: 68274 bytes --]
Flat profile:
Each sample counts as 0.01 seconds.
% cumulative self self total
time seconds seconds calls s/call s/call name
54.23 253.63 253.63 main
8.09 291.45 37.82 1 37.82 37.82 void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*)
4.43 312.18 20.73 1 20.73 20.73 void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*)
4.08 331.28 19.10 1 19.10 19.10 void test_constant<double, custom_constant_divide<double> >(double*, int, char const*)
2.25 341.79 10.50 1 10.50 10.50 void test_constant<float, custom_constant_divide<float> >(float*, int, char const*)
1.17 347.28 5.49 1 5.49 5.49 void test_constant<signed char, custom_multiple_constant_divide<signed char> >(signed char*, int, char const*)
0.78 350.94 3.66 1 3.66 3.66 void test_constant<short, custom_multiple_constant_divide<short> >(short*, int, char const*)
0.75 354.47 3.53 1 3.53 3.53 void test_constant<short, custom_constant_divide<short> >(short*, int, char const*)
0.75 357.97 3.50 1 3.50 3.50 void test_constant<signed char, custom_constant_divide<signed char> >(signed char*, int, char const*)
0.65 361.03 3.06 1 3.06 3.06 void test_constant<short, custom_multiple_constant_multiply<short> >(short*, int, char const*)
0.65 364.08 3.05 1 3.05 3.05 void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*)
0.65 367.13 3.05 1 3.05 3.05 void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*)
0.65 370.18 3.05 1 3.05 3.05 void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*)
0.65 373.23 3.05 1 3.05 3.05 void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*)
0.65 376.28 3.05 1 3.05 3.05 void test_constant<unsigned char, custom_constant_divide<unsigned char> >(unsigned char*, int, char const*)
0.65 379.32 3.04 1 3.04 3.04 void test_constant<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char*, int, char const*)
0.65 382.36 3.04 1 3.04 3.04 void test_constant<short, custom_constant_multiply<short> >(short*, int, char const*)
0.56 384.96 2.60 1 2.60 2.60 void test_constant<signed char, custom_multiple_constant_add<signed char> >(signed char*, int, char const*)
0.56 387.56 2.60 1 2.60 2.60 void test_constant<short, custom_multiple_constant_multiply2<short> >(short*, int, char const*)
0.55 390.15 2.59 1 2.59 2.59 void test_constant<signed char, custom_multiple_constant_sub<signed char> >(signed char*, int, char const*)
0.55 392.74 2.59 1 2.59 2.59 void test_constant<signed char, custom_multiple_constant_multiply2<signed char> >(signed char*, int, char const*)
0.55 395.33 2.59 1 2.59 2.59 void test_constant<short, custom_constant_add<short> >(short*, int, char const*)
0.55 397.92 2.59 1 2.59 2.59 void test_constant<short, custom_constant_sub<short> >(short*, int, char const*)
0.55 400.51 2.59 1 2.59 2.59 void test_constant<short, custom_multiple_constant_add<short> >(short*, int, char const*)
0.55 403.10 2.59 1 2.59 2.59 void test_constant<short, custom_multiple_constant_sub<short> >(short*, int, char const*)
0.55 405.69 2.59 1 2.59 2.59 void test_constant<short, custom_multiple_constant_divide2<short> >(short*, int, char const*)
0.55 408.27 2.58 1 2.58 2.58 void test_constant<signed char, custom_constant_add<signed char> >(signed char*, int, char const*)
0.55 410.85 2.58 1 2.58 2.58 void test_constant<signed char, custom_constant_sub<signed char> >(signed char*, int, char const*)
0.55 413.44 2.58 1 2.58 2.58 void test_constant<signed char, custom_multiple_constant_divide2<signed char> >(signed char*, int, char const*)
0.46 415.57 2.13 1 2.13 2.13 void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*)
0.43 417.58 2.01 1 2.01 2.01 void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*)
0.41 419.51 1.93 1 1.93 1.93 void test_constant<double, custom_multiple_constant_mixed<double> >(double*, int, char const*)
0.41 421.42 1.91 1 1.91 1.91 void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*)
0.39 423.26 1.84 1 1.84 1.84 void test_constant<double, custom_constant_add<double> >(double*, int, char const*)
0.39 425.10 1.84 1 1.84 1.84 void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*)
0.39 426.94 1.84 1 1.84 1.84 void test_constant<double, custom_constant_sub<double> >(double*, int, char const*)
0.39 428.78 1.84 1 1.84 1.84 void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*)
0.39 430.61 1.83 1 1.83 1.83 void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*)
0.39 432.44 1.83 1 1.83 1.83 void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*)
0.39 434.27 1.83 1 1.83 1.83 void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*)
0.39 436.10 1.83 1 1.83 1.83 void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*)
0.39 437.93 1.83 1 1.83 1.83 void test_constant<float, custom_constant_add<float> >(float*, int, char const*)
0.39 439.75 1.82 1 1.82 1.82 void test_constant<float, custom_constant_sub<float> >(float*, int, char const*)
0.35 441.41 1.66 1 1.66 1.66 void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*)
0.35 443.06 1.65 1 1.65 1.65 void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*)
0.29 444.40 1.34 1 1.34 1.34 void test_constant<signed char, custom_constant_xor<signed char> >(signed char*, int, char const*)
0.28 445.73 1.33 1 1.33 1.33 void test_constant<signed char, custom_multiple_constant_xor<signed char> >(signed char*, int, char const*)
0.28 447.05 1.32 1 1.32 1.32 void test_constant<signed char, custom_multiple_constant_and<signed char> >(signed char*, int, char const*)
0.28 448.36 1.31 1 1.31 1.31 void test_constant<signed char, custom_constant_or<signed char> >(signed char*, int, char const*)
0.28 449.67 1.31 1 1.31 1.31 void test_constant<signed char, custom_constant_and<signed char> >(signed char*, int, char const*)
0.28 450.98 1.31 1 1.31 1.31 void test_constant<short, custom_constant_or<short> >(short*, int, char const*)
0.28 452.29 1.31 1 1.31 1.31 void test_constant<short, custom_constant_and<short> >(short*, int, char const*)
0.28 453.60 1.31 1 1.31 1.31 void test_constant<short, custom_constant_xor<short> >(short*, int, char const*)
0.28 454.91 1.31 1 1.31 1.31 void test_constant<short, custom_multiple_constant_or<short> >(short*, int, char const*)
0.28 456.22 1.31 1 1.31 1.31 void test_constant<short, custom_multiple_constant_and<short> >(short*, int, char const*)
0.28 457.53 1.31 1 1.31 1.31 void test_constant<short, custom_multiple_constant_xor<short> >(short*, int, char const*)
0.28 458.83 1.30 1 1.30 1.30 void test_constant<signed char, custom_multiple_constant_or<signed char> >(signed char*, int, char const*)
0.27 460.11 1.28 1 1.28 1.28 void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*)
0.19 460.99 0.88 1 0.88 0.88 void test_constant<signed char, custom_multiple_constant_mixed<signed char> >(signed char*, int, char const*)
0.19 461.87 0.88 1 0.88 0.88 void test_constant<short, custom_multiple_constant_mixed<short> >(short*, int, char const*)
0.08 462.23 0.36 1 0.36 0.36 void test_constant<int, custom_constant_add<int> >(int*, int, char const*)
0.08 462.59 0.36 1 0.36 0.36 void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*)
0.07 462.94 0.35 1 0.35 0.35 void test_constant<int, custom_constant_or<int> >(int*, int, char const*)
0.07 463.29 0.35 1 0.35 0.35 void test_constant<int, custom_constant_and<int> >(int*, int, char const*)
0.07 463.64 0.35 1 0.35 0.35 void test_constant<int, custom_constant_sub<int> >(int*, int, char const*)
0.07 463.99 0.35 1 0.35 0.35 void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*)
0.04 464.19 0.20 1 0.20 0.20 void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*)
0.04 464.39 0.20 1 0.20 0.20 void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*)
0.04 464.57 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*)
0.04 464.75 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*)
0.04 464.93 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*)
0.04 465.11 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*)
0.04 465.29 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*)
0.04 465.47 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*)
0.04 465.65 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*)
0.04 465.83 0.18 1 0.18 0.18 void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*)
0.04 466.00 0.17 1 0.17 0.17 void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*)
0.04 466.17 0.17 1 0.17 0.17 void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*)
0.04 466.34 0.17 1 0.17 0.17 void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*)
0.04 466.51 0.17 1 0.17 0.17 void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*)
0.03 466.67 0.16 1 0.16 0.16 void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*)
0.02 466.77 0.10 1 0.10 0.10 void test_constant<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char*, int, char const*)
0.02 466.86 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_constant_or<unsigned char> >(unsigned char*, int, char const*)
0.02 466.95 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_constant_add<unsigned char> >(unsigned char*, int, char const*)
0.02 467.04 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_constant_and<unsigned char> >(unsigned char*, int, char const*)
0.02 467.13 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_constant_sub<unsigned char> >(unsigned char*, int, char const*)
0.02 467.22 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_constant_xor<unsigned char> >(unsigned char*, int, char const*)
0.02 467.31 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char*, int, char const*)
0.02 467.40 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char*, int, char const*)
0.02 467.49 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char*, int, char const*)
0.02 467.58 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char*, int, char const*)
0.02 467.67 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char*, int, char const*)
0.02 467.76 0.09 1 0.09 0.09 void test_constant<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char*, int, char const*)
0.00 467.76 0.00 288 0.00 0.00 record_result(double, char const*)
0.00 467.76 0.00 196 0.00 0.00 timer()
0.00 467.76 0.00 164 0.00 0.00 start_timer()
0.00 467.76 0.00 20 0.00 0.00 summarize(char const*, int, int, int, int)
0.00 467.76 0.00 1 0.00 0.00 _GLOBAL__sub_I_results
% the percentage of the total running time of the
time program used by this function.
cumulative a running sum of the number of seconds accounted
seconds for by this function and those listed above it.
self the number of seconds accounted for by this
seconds function alone. This is the major sort for this
listing.
calls the number of times this function was invoked, if
this function is profiled, else blank.
self the average number of milliseconds spent in this
ms/call function per call, if this function is profiled,
else blank.
total the average number of milliseconds spent in this
ms/call function and its descendents per call, if this
function is profiled, else blank.
name the name of the function. This is the minor sort
for this listing. The index shows the location of
the function in the gprof listing. If the index is
in parenthesis it shows where it would appear in
the gprof listing if it were to be printed.
\f
Call graph (explanation follows)
granularity: each sample hit covers 2 byte(s) for 0.00% of 467.76 seconds
index % time self children called name
<spontaneous>
[1] 100.0 253.63 214.13 main [1]
37.82 0.00 1/1 void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*) [2]
20.73 0.00 1/1 void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*) [3]
19.10 0.00 1/1 void test_constant<double, custom_constant_divide<double> >(double*, int, char const*) [4]
10.50 0.00 1/1 void test_constant<float, custom_constant_divide<float> >(float*, int, char const*) [5]
5.49 0.00 1/1 void test_constant<signed char, custom_multiple_constant_divide<signed char> >(signed char*, int, char const*) [6]
3.66 0.00 1/1 void test_constant<short, custom_multiple_constant_divide<short> >(short*, int, char const*) [7]
3.53 0.00 1/1 void test_constant<short, custom_constant_divide<short> >(short*, int, char const*) [8]
3.50 0.00 1/1 void test_constant<signed char, custom_constant_divide<signed char> >(signed char*, int, char const*) [9]
3.06 0.00 1/1 void test_constant<short, custom_multiple_constant_multiply<short> >(short*, int, char const*) [10]
3.05 0.00 1/1 void test_constant<unsigned char, custom_constant_divide<unsigned char> >(unsigned char*, int, char const*) [15]
3.05 0.00 1/1 void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*) [13]
3.05 0.00 1/1 void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*) [14]
3.05 0.00 1/1 void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*) [11]
3.05 0.00 1/1 void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*) [12]
3.04 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char*, int, char const*) [16]
3.04 0.00 1/1 void test_constant<short, custom_constant_multiply<short> >(short*, int, char const*) [17]
2.60 0.00 1/1 void test_constant<signed char, custom_multiple_constant_add<signed char> >(signed char*, int, char const*) [18]
2.60 0.00 1/1 void test_constant<short, custom_multiple_constant_multiply2<short> >(short*, int, char const*) [19]
2.59 0.00 1/1 void test_constant<signed char, custom_multiple_constant_sub<signed char> >(signed char*, int, char const*) [20]
2.59 0.00 1/1 void test_constant<signed char, custom_multiple_constant_multiply2<signed char> >(signed char*, int, char const*) [21]
2.59 0.00 1/1 void test_constant<short, custom_constant_add<short> >(short*, int, char const*) [22]
2.59 0.00 1/1 void test_constant<short, custom_multiple_constant_add<short> >(short*, int, char const*) [24]
2.59 0.00 1/1 void test_constant<short, custom_constant_sub<short> >(short*, int, char const*) [23]
2.59 0.00 1/1 void test_constant<short, custom_multiple_constant_sub<short> >(short*, int, char const*) [25]
2.59 0.00 1/1 void test_constant<short, custom_multiple_constant_divide2<short> >(short*, int, char const*) [26]
2.58 0.00 1/1 void test_constant<signed char, custom_constant_add<signed char> >(signed char*, int, char const*) [27]
2.58 0.00 1/1 void test_constant<signed char, custom_constant_sub<signed char> >(signed char*, int, char const*) [28]
2.58 0.00 1/1 void test_constant<signed char, custom_multiple_constant_divide2<signed char> >(signed char*, int, char const*) [29]
2.13 0.00 1/1 void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*) [30]
2.01 0.00 1/1 void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*) [31]
1.93 0.00 1/1 void test_constant<double, custom_multiple_constant_mixed<double> >(double*, int, char const*) [32]
1.91 0.00 1/1 void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*) [33]
1.84 0.00 1/1 void test_constant<double, custom_constant_add<double> >(double*, int, char const*) [34]
1.84 0.00 1/1 void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*) [35]
1.84 0.00 1/1 void test_constant<double, custom_constant_sub<double> >(double*, int, char const*) [36]
1.84 0.00 1/1 void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*) [37]
1.83 0.00 1/1 void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*) [39]
1.83 0.00 1/1 void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*) [41]
1.83 0.00 1/1 void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*) [40]
1.83 0.00 1/1 void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*) [38]
1.83 0.00 1/1 void test_constant<float, custom_constant_add<float> >(float*, int, char const*) [42]
1.82 0.00 1/1 void test_constant<float, custom_constant_sub<float> >(float*, int, char const*) [43]
1.66 0.00 1/1 void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*) [44]
1.65 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*) [45]
1.34 0.00 1/1 void test_constant<signed char, custom_constant_xor<signed char> >(signed char*, int, char const*) [46]
1.33 0.00 1/1 void test_constant<signed char, custom_multiple_constant_xor<signed char> >(signed char*, int, char const*) [47]
1.32 0.00 1/1 void test_constant<signed char, custom_multiple_constant_and<signed char> >(signed char*, int, char const*) [48]
1.31 0.00 1/1 void test_constant<signed char, custom_constant_and<signed char> >(signed char*, int, char const*) [50]
1.31 0.00 1/1 void test_constant<signed char, custom_constant_or<signed char> >(signed char*, int, char const*) [49]
1.31 0.00 1/1 void test_constant<short, custom_constant_and<short> >(short*, int, char const*) [52]
1.31 0.00 1/1 void test_constant<short, custom_multiple_constant_and<short> >(short*, int, char const*) [55]
1.31 0.00 1/1 void test_constant<short, custom_constant_or<short> >(short*, int, char const*) [51]
1.31 0.00 1/1 void test_constant<short, custom_multiple_constant_or<short> >(short*, int, char const*) [54]
1.31 0.00 1/1 void test_constant<short, custom_constant_xor<short> >(short*, int, char const*) [53]
1.31 0.00 1/1 void test_constant<short, custom_multiple_constant_xor<short> >(short*, int, char const*) [56]
1.30 0.00 1/1 void test_constant<signed char, custom_multiple_constant_or<signed char> >(signed char*, int, char const*) [57]
1.28 0.00 1/1 void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*) [58]
0.88 0.00 1/1 void test_constant<signed char, custom_multiple_constant_mixed<signed char> >(signed char*, int, char const*) [59]
0.88 0.00 1/1 void test_constant<short, custom_multiple_constant_mixed<short> >(short*, int, char const*) [60]
0.36 0.00 1/1 void test_constant<int, custom_constant_add<int> >(int*, int, char const*) [61]
0.36 0.00 1/1 void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*) [62]
0.35 0.00 1/1 void test_constant<int, custom_constant_sub<int> >(int*, int, char const*) [65]
0.35 0.00 1/1 void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*) [66]
0.35 0.00 1/1 void test_constant<int, custom_constant_and<int> >(int*, int, char const*) [64]
0.35 0.00 1/1 void test_constant<int, custom_constant_or<int> >(int*, int, char const*) [63]
0.20 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [67]
0.20 0.00 1/1 void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [68]
0.18 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*) [72]
0.18 0.00 1/1 void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*) [69]
0.18 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*) [74]
0.18 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*) [76]
0.18 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*) [75]
0.18 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*) [73]
0.18 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*) [71]
0.18 0.00 1/1 void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*) [70]
0.17 0.00 1/1 void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*) [78]
0.17 0.00 1/1 void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*) [79]
0.17 0.00 1/1 void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*) [77]
0.17 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*) [80]
0.16 0.00 1/1 void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*) [81]
0.10 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char*, int, char const*) [82]
0.09 0.00 1/1 void test_constant<unsigned char, custom_constant_add<unsigned char> >(unsigned char*, int, char const*) [84]
0.09 0.00 1/1 void test_constant<unsigned char, custom_constant_sub<unsigned char> >(unsigned char*, int, char const*) [86]
0.09 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char*, int, char const*) [90]
0.09 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char*, int, char const*) [93]
0.09 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char*, int, char const*) [92]
0.09 0.00 1/1 void test_constant<unsigned char, custom_constant_and<unsigned char> >(unsigned char*, int, char const*) [85]
0.09 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char*, int, char const*) [89]
0.09 0.00 1/1 void test_constant<unsigned char, custom_constant_or<unsigned char> >(unsigned char*, int, char const*) [83]
0.09 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char*, int, char const*) [88]
0.09 0.00 1/1 void test_constant<unsigned char, custom_constant_xor<unsigned char> >(unsigned char*, int, char const*) [87]
0.09 0.00 1/1 void test_constant<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char*, int, char const*) [91]
0.00 0.00 288/288 record_result(double, char const*) [100]
0.00 0.00 196/196 timer() [101]
0.00 0.00 164/164 start_timer() [102]
0.00 0.00 20/20 summarize(char const*, int, int, int, int) [103]
-----------------------------------------------
37.82 0.00 1/1 main [1]
[2] 8.1 37.82 0.00 1 void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*) [2]
-----------------------------------------------
20.73 0.00 1/1 main [1]
[3] 4.4 20.73 0.00 1 void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*) [3]
-----------------------------------------------
19.10 0.00 1/1 main [1]
[4] 4.1 19.10 0.00 1 void test_constant<double, custom_constant_divide<double> >(double*, int, char const*) [4]
-----------------------------------------------
10.50 0.00 1/1 main [1]
[5] 2.2 10.50 0.00 1 void test_constant<float, custom_constant_divide<float> >(float*, int, char const*) [5]
-----------------------------------------------
5.49 0.00 1/1 main [1]
[6] 1.2 5.49 0.00 1 void test_constant<signed char, custom_multiple_constant_divide<signed char> >(signed char*, int, char const*) [6]
-----------------------------------------------
3.66 0.00 1/1 main [1]
[7] 0.8 3.66 0.00 1 void test_constant<short, custom_multiple_constant_divide<short> >(short*, int, char const*) [7]
-----------------------------------------------
3.53 0.00 1/1 main [1]
[8] 0.8 3.53 0.00 1 void test_constant<short, custom_constant_divide<short> >(short*, int, char const*) [8]
-----------------------------------------------
3.50 0.00 1/1 main [1]
[9] 0.7 3.50 0.00 1 void test_constant<signed char, custom_constant_divide<signed char> >(signed char*, int, char const*) [9]
-----------------------------------------------
3.06 0.00 1/1 main [1]
[10] 0.7 3.06 0.00 1 void test_constant<short, custom_multiple_constant_multiply<short> >(short*, int, char const*) [10]
-----------------------------------------------
3.05 0.00 1/1 main [1]
[11] 0.7 3.05 0.00 1 void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*) [11]
-----------------------------------------------
3.05 0.00 1/1 main [1]
[12] 0.7 3.05 0.00 1 void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*) [12]
-----------------------------------------------
3.05 0.00 1/1 main [1]
[13] 0.7 3.05 0.00 1 void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*) [13]
-----------------------------------------------
3.05 0.00 1/1 main [1]
[14] 0.7 3.05 0.00 1 void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*) [14]
-----------------------------------------------
3.05 0.00 1/1 main [1]
[15] 0.7 3.05 0.00 1 void test_constant<unsigned char, custom_constant_divide<unsigned char> >(unsigned char*, int, char const*) [15]
-----------------------------------------------
3.04 0.00 1/1 main [1]
[16] 0.6 3.04 0.00 1 void test_constant<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char*, int, char const*) [16]
-----------------------------------------------
3.04 0.00 1/1 main [1]
[17] 0.6 3.04 0.00 1 void test_constant<short, custom_constant_multiply<short> >(short*, int, char const*) [17]
-----------------------------------------------
2.60 0.00 1/1 main [1]
[18] 0.6 2.60 0.00 1 void test_constant<signed char, custom_multiple_constant_add<signed char> >(signed char*, int, char const*) [18]
-----------------------------------------------
2.60 0.00 1/1 main [1]
[19] 0.6 2.60 0.00 1 void test_constant<short, custom_multiple_constant_multiply2<short> >(short*, int, char const*) [19]
-----------------------------------------------
2.59 0.00 1/1 main [1]
[20] 0.6 2.59 0.00 1 void test_constant<signed char, custom_multiple_constant_sub<signed char> >(signed char*, int, char const*) [20]
-----------------------------------------------
2.59 0.00 1/1 main [1]
[21] 0.6 2.59 0.00 1 void test_constant<signed char, custom_multiple_constant_multiply2<signed char> >(signed char*, int, char const*) [21]
-----------------------------------------------
2.59 0.00 1/1 main [1]
[22] 0.6 2.59 0.00 1 void test_constant<short, custom_constant_add<short> >(short*, int, char const*) [22]
-----------------------------------------------
2.59 0.00 1/1 main [1]
[23] 0.6 2.59 0.00 1 void test_constant<short, custom_constant_sub<short> >(short*, int, char const*) [23]
-----------------------------------------------
2.59 0.00 1/1 main [1]
[24] 0.6 2.59 0.00 1 void test_constant<short, custom_multiple_constant_add<short> >(short*, int, char const*) [24]
-----------------------------------------------
2.59 0.00 1/1 main [1]
[25] 0.6 2.59 0.00 1 void test_constant<short, custom_multiple_constant_sub<short> >(short*, int, char const*) [25]
-----------------------------------------------
2.59 0.00 1/1 main [1]
[26] 0.6 2.59 0.00 1 void test_constant<short, custom_multiple_constant_divide2<short> >(short*, int, char const*) [26]
-----------------------------------------------
2.58 0.00 1/1 main [1]
[27] 0.6 2.58 0.00 1 void test_constant<signed char, custom_constant_add<signed char> >(signed char*, int, char const*) [27]
-----------------------------------------------
2.58 0.00 1/1 main [1]
[28] 0.6 2.58 0.00 1 void test_constant<signed char, custom_constant_sub<signed char> >(signed char*, int, char const*) [28]
-----------------------------------------------
2.58 0.00 1/1 main [1]
[29] 0.6 2.58 0.00 1 void test_constant<signed char, custom_multiple_constant_divide2<signed char> >(signed char*, int, char const*) [29]
-----------------------------------------------
2.13 0.00 1/1 main [1]
[30] 0.5 2.13 0.00 1 void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*) [30]
-----------------------------------------------
2.01 0.00 1/1 main [1]
[31] 0.4 2.01 0.00 1 void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*) [31]
-----------------------------------------------
1.93 0.00 1/1 main [1]
[32] 0.4 1.93 0.00 1 void test_constant<double, custom_multiple_constant_mixed<double> >(double*, int, char const*) [32]
-----------------------------------------------
1.91 0.00 1/1 main [1]
[33] 0.4 1.91 0.00 1 void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*) [33]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[34] 0.4 1.84 0.00 1 void test_constant<double, custom_constant_add<double> >(double*, int, char const*) [34]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[35] 0.4 1.84 0.00 1 void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*) [35]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[36] 0.4 1.84 0.00 1 void test_constant<double, custom_constant_sub<double> >(double*, int, char const*) [36]
-----------------------------------------------
1.84 0.00 1/1 main [1]
[37] 0.4 1.84 0.00 1 void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*) [37]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[38] 0.4 1.83 0.00 1 void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*) [38]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[39] 0.4 1.83 0.00 1 void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*) [39]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[40] 0.4 1.83 0.00 1 void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*) [40]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[41] 0.4 1.83 0.00 1 void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*) [41]
-----------------------------------------------
1.83 0.00 1/1 main [1]
[42] 0.4 1.83 0.00 1 void test_constant<float, custom_constant_add<float> >(float*, int, char const*) [42]
-----------------------------------------------
1.82 0.00 1/1 main [1]
[43] 0.4 1.82 0.00 1 void test_constant<float, custom_constant_sub<float> >(float*, int, char const*) [43]
-----------------------------------------------
1.66 0.00 1/1 main [1]
[44] 0.4 1.66 0.00 1 void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*) [44]
-----------------------------------------------
1.65 0.00 1/1 main [1]
[45] 0.4 1.65 0.00 1 void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*) [45]
-----------------------------------------------
1.34 0.00 1/1 main [1]
[46] 0.3 1.34 0.00 1 void test_constant<signed char, custom_constant_xor<signed char> >(signed char*, int, char const*) [46]
-----------------------------------------------
1.33 0.00 1/1 main [1]
[47] 0.3 1.33 0.00 1 void test_constant<signed char, custom_multiple_constant_xor<signed char> >(signed char*, int, char const*) [47]
-----------------------------------------------
1.32 0.00 1/1 main [1]
[48] 0.3 1.32 0.00 1 void test_constant<signed char, custom_multiple_constant_and<signed char> >(signed char*, int, char const*) [48]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[49] 0.3 1.31 0.00 1 void test_constant<signed char, custom_constant_or<signed char> >(signed char*, int, char const*) [49]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[50] 0.3 1.31 0.00 1 void test_constant<signed char, custom_constant_and<signed char> >(signed char*, int, char const*) [50]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[51] 0.3 1.31 0.00 1 void test_constant<short, custom_constant_or<short> >(short*, int, char const*) [51]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[52] 0.3 1.31 0.00 1 void test_constant<short, custom_constant_and<short> >(short*, int, char const*) [52]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[53] 0.3 1.31 0.00 1 void test_constant<short, custom_constant_xor<short> >(short*, int, char const*) [53]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[54] 0.3 1.31 0.00 1 void test_constant<short, custom_multiple_constant_or<short> >(short*, int, char const*) [54]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[55] 0.3 1.31 0.00 1 void test_constant<short, custom_multiple_constant_and<short> >(short*, int, char const*) [55]
-----------------------------------------------
1.31 0.00 1/1 main [1]
[56] 0.3 1.31 0.00 1 void test_constant<short, custom_multiple_constant_xor<short> >(short*, int, char const*) [56]
-----------------------------------------------
1.30 0.00 1/1 main [1]
[57] 0.3 1.30 0.00 1 void test_constant<signed char, custom_multiple_constant_or<signed char> >(signed char*, int, char const*) [57]
-----------------------------------------------
1.28 0.00 1/1 main [1]
[58] 0.3 1.28 0.00 1 void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*) [58]
-----------------------------------------------
0.88 0.00 1/1 main [1]
[59] 0.2 0.88 0.00 1 void test_constant<signed char, custom_multiple_constant_mixed<signed char> >(signed char*, int, char const*) [59]
-----------------------------------------------
0.88 0.00 1/1 main [1]
[60] 0.2 0.88 0.00 1 void test_constant<short, custom_multiple_constant_mixed<short> >(short*, int, char const*) [60]
-----------------------------------------------
0.36 0.00 1/1 main [1]
[61] 0.1 0.36 0.00 1 void test_constant<int, custom_constant_add<int> >(int*, int, char const*) [61]
-----------------------------------------------
0.36 0.00 1/1 main [1]
[62] 0.1 0.36 0.00 1 void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*) [62]
-----------------------------------------------
0.35 0.00 1/1 main [1]
[63] 0.1 0.35 0.00 1 void test_constant<int, custom_constant_or<int> >(int*, int, char const*) [63]
-----------------------------------------------
0.35 0.00 1/1 main [1]
[64] 0.1 0.35 0.00 1 void test_constant<int, custom_constant_and<int> >(int*, int, char const*) [64]
-----------------------------------------------
0.35 0.00 1/1 main [1]
[65] 0.1 0.35 0.00 1 void test_constant<int, custom_constant_sub<int> >(int*, int, char const*) [65]
-----------------------------------------------
0.35 0.00 1/1 main [1]
[66] 0.1 0.35 0.00 1 void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*) [66]
-----------------------------------------------
0.20 0.00 1/1 main [1]
[67] 0.0 0.20 0.00 1 void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [67]
-----------------------------------------------
0.20 0.00 1/1 main [1]
[68] 0.0 0.20 0.00 1 void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*) [68]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[69] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*) [69]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[70] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*) [70]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[71] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*) [71]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[72] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*) [72]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[73] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*) [73]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[74] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*) [74]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[75] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*) [75]
-----------------------------------------------
0.18 0.00 1/1 main [1]
[76] 0.0 0.18 0.00 1 void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*) [76]
-----------------------------------------------
0.17 0.00 1/1 main [1]
[77] 0.0 0.17 0.00 1 void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*) [77]
-----------------------------------------------
0.17 0.00 1/1 main [1]
[78] 0.0 0.17 0.00 1 void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*) [78]
-----------------------------------------------
0.17 0.00 1/1 main [1]
[79] 0.0 0.17 0.00 1 void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*) [79]
-----------------------------------------------
0.17 0.00 1/1 main [1]
[80] 0.0 0.17 0.00 1 void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*) [80]
-----------------------------------------------
0.16 0.00 1/1 main [1]
[81] 0.0 0.16 0.00 1 void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*) [81]
-----------------------------------------------
0.10 0.00 1/1 main [1]
[82] 0.0 0.10 0.00 1 void test_constant<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char*, int, char const*) [82]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[83] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_constant_or<unsigned char> >(unsigned char*, int, char const*) [83]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[84] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_constant_add<unsigned char> >(unsigned char*, int, char const*) [84]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[85] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_constant_and<unsigned char> >(unsigned char*, int, char const*) [85]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[86] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_constant_sub<unsigned char> >(unsigned char*, int, char const*) [86]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[87] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_constant_xor<unsigned char> >(unsigned char*, int, char const*) [87]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[88] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char*, int, char const*) [88]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[89] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char*, int, char const*) [89]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[90] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char*, int, char const*) [90]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[91] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char*, int, char const*) [91]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[92] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char*, int, char const*) [92]
-----------------------------------------------
0.09 0.00 1/1 main [1]
[93] 0.0 0.09 0.00 1 void test_constant<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char*, int, char const*) [93]
-----------------------------------------------
0.00 0.00 288/288 main [1]
[100] 0.0 0.00 0.00 288 record_result(double, char const*) [100]
-----------------------------------------------
0.00 0.00 196/196 main [1]
[101] 0.0 0.00 0.00 196 timer() [101]
-----------------------------------------------
0.00 0.00 164/164 main [1]
[102] 0.0 0.00 0.00 164 start_timer() [102]
-----------------------------------------------
0.00 0.00 20/20 main [1]
[103] 0.0 0.00 0.00 20 summarize(char const*, int, int, int, int) [103]
-----------------------------------------------
0.00 0.00 1/1 __do_global_ctors_aux [106]
[104] 0.0 0.00 0.00 1 _GLOBAL__sub_I_results [104]
-----------------------------------------------
This table describes the call tree of the program, and was sorted by
the total amount of time spent in each function and its children.
Each entry in this table consists of several lines. The line with the
index number at the left hand margin lists the current function.
The lines above it list the functions that called this function,
and the lines below it list the functions this one called.
This line lists:
index A unique number given to each element of the table.
Index numbers are sorted numerically.
The index number is printed next to every function name so
it is easier to look up where the function in the table.
% time This is the percentage of the `total' time that was spent
in this function and its children. Note that due to
different viewpoints, functions excluded by options, etc,
these numbers will NOT add up to 100%.
self This is the total amount of time spent in this function.
children This is the total amount of time propagated into this
function by its children.
called This is the number of times the function was called.
If the function called itself recursively, the number
only includes non-recursive calls, and is followed by
a `+' and the number of recursive calls.
name The name of the current function. The index number is
printed after it. If the function is a member of a
cycle, the cycle number is printed between the
function's name and the index number.
For the function's parents, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the function into this parent.
children This is the amount of time that was propagated from
the function's children into this parent.
called This is the number of times this parent called the
function `/' the total number of times the function
was called. Recursive calls to the function are not
included in the number after the `/'.
name This is the name of the parent. The parent's index
number is printed after it. If the parent is a
member of a cycle, the cycle number is printed between
the name and the index number.
If the parents of the function cannot be determined, the word
`<spontaneous>' is printed in the `name' field, and all the other
fields are blank.
For the function's children, the fields have the following meanings:
self This is the amount of time that was propagated directly
from the child into the function.
children This is the amount of time that was propagated from the
child's children to the function.
called This is the number of times the function called
this child `/' the total number of times the child
was called. Recursive calls by the child are not
listed in the number after the `/'.
name This is the name of the child. The child's index
number is printed after it. If the child is a
member of a cycle, the cycle number is printed
between the name and the index number.
If there are any cycles (circles) in the call graph, there is an
entry for the cycle-as-a-whole. This entry shows who called the
cycle (as parents) and the members of the cycle (as children.)
The `+' recursive calls entry shows the number of function calls that
were internal to the cycle, and the calls entry for each member shows,
for that member, how many times it was called from other members of
the cycle.
\f
Index by function name
[104] _GLOBAL__sub_I_results (simple_types_constant_folding.cpp) [13] void test_constant<float, custom_multiple_constant_add<float> >(float*, int, char const*) [8] void test_constant<short, custom_constant_divide<short> >(short*, int, char const*)
[102] start_timer() [14] void test_constant<float, custom_multiple_constant_sub<float> >(float*, int, char const*) [17] void test_constant<short, custom_constant_multiply<short> >(short*, int, char const*)
[100] record_result(double, char const*) [33] void test_constant<float, custom_multiple_constant_mixed<float> >(float*, int, char const*) [54] void test_constant<short, custom_multiple_constant_or<short> >(short*, int, char const*)
[49] void test_constant<signed char, custom_constant_or<signed char> >(signed char*, int, char const*) [3] void test_constant<float, custom_multiple_constant_divide<float> >(float*, int, char const*) [24] void test_constant<short, custom_multiple_constant_add<short> >(short*, int, char const*)
[27] void test_constant<signed char, custom_constant_add<signed char> >(signed char*, int, char const*) [40] void test_constant<float, custom_multiple_constant_divide2<float> >(float*, int, char const*) [55] void test_constant<short, custom_multiple_constant_and<short> >(short*, int, char const*)
[50] void test_constant<signed char, custom_constant_and<signed char> >(signed char*, int, char const*) [31] void test_constant<float, custom_multiple_constant_multiply<float> >(float*, int, char const*) [25] void test_constant<short, custom_multiple_constant_sub<short> >(short*, int, char const*)
[28] void test_constant<signed char, custom_constant_sub<signed char> >(signed char*, int, char const*) [41] void test_constant<float, custom_multiple_constant_multiply2<float> >(float*, int, char const*) [56] void test_constant<short, custom_multiple_constant_xor<short> >(short*, int, char const*)
[46] void test_constant<signed char, custom_constant_xor<signed char> >(signed char*, int, char const*) [83] void test_constant<unsigned char, custom_constant_or<unsigned char> >(unsigned char*, int, char const*) [60] void test_constant<short, custom_multiple_constant_mixed<short> >(short*, int, char const*)
[9] void test_constant<signed char, custom_constant_divide<signed char> >(signed char*, int, char const*) [84] void test_constant<unsigned char, custom_constant_add<unsigned char> >(unsigned char*, int, char const*) [7] void test_constant<short, custom_multiple_constant_divide<short> >(short*, int, char const*)
[57] void test_constant<signed char, custom_multiple_constant_or<signed char> >(signed char*, int, char const*) [85] void test_constant<unsigned char, custom_constant_and<unsigned char> >(unsigned char*, int, char const*) [26] void test_constant<short, custom_multiple_constant_divide2<short> >(short*, int, char const*)
[18] void test_constant<signed char, custom_multiple_constant_add<signed char> >(signed char*, int, char const*) [86] void test_constant<unsigned char, custom_constant_sub<unsigned char> >(unsigned char*, int, char const*) [10] void test_constant<short, custom_multiple_constant_multiply<short> >(short*, int, char const*)
[48] void test_constant<signed char, custom_multiple_constant_and<signed char> >(signed char*, int, char const*) [87] void test_constant<unsigned char, custom_constant_xor<unsigned char> >(unsigned char*, int, char const*) [19] void test_constant<short, custom_multiple_constant_multiply2<short> >(short*, int, char const*)
[20] void test_constant<signed char, custom_multiple_constant_sub<signed char> >(signed char*, int, char const*) [15] void test_constant<unsigned char, custom_constant_divide<unsigned char> >(unsigned char*, int, char const*) [77] void test_constant<unsigned short, custom_constant_or<unsigned short> >(unsigned short*, int, char const*)
[47] void test_constant<signed char, custom_multiple_constant_xor<signed char> >(signed char*, int, char const*) [88] void test_constant<unsigned char, custom_multiple_constant_or<unsigned char> >(unsigned char*, int, char const*) [78] void test_constant<unsigned short, custom_constant_add<unsigned short> >(unsigned short*, int, char const*)
[59] void test_constant<signed char, custom_multiple_constant_mixed<signed char> >(signed char*, int, char const*) [82] void test_constant<unsigned char, custom_multiple_constant_add<unsigned char> >(unsigned char*, int, char const*) [79] void test_constant<unsigned short, custom_constant_and<unsigned short> >(unsigned short*, int, char const*)
[6] void test_constant<signed char, custom_multiple_constant_divide<signed char> >(signed char*, int, char const*) [89] void test_constant<unsigned char, custom_multiple_constant_and<unsigned char> >(unsigned char*, int, char const*) [69] void test_constant<unsigned short, custom_constant_sub<unsigned short> >(unsigned short*, int, char const*)
[29] void test_constant<signed char, custom_multiple_constant_divide2<signed char> >(signed char*, int, char const*) [90] void test_constant<unsigned char, custom_multiple_constant_sub<unsigned char> >(unsigned char*, int, char const*) [70] void test_constant<unsigned short, custom_constant_xor<unsigned short> >(unsigned short*, int, char const*)
[21] void test_constant<signed char, custom_multiple_constant_multiply2<signed char> >(signed char*, int, char const*) [91] void test_constant<unsigned char, custom_multiple_constant_xor<unsigned char> >(unsigned char*, int, char const*) [44] void test_constant<unsigned short, custom_constant_divide<unsigned short> >(unsigned short*, int, char const*)
[34] void test_constant<double, custom_constant_add<double> >(double*, int, char const*) [16] void test_constant<unsigned char, custom_multiple_constant_divide<unsigned char> >(unsigned char*, int, char const*) [68] void test_constant<unsigned short, custom_constant_multiply<unsigned short> >(unsigned short*, int, char const*)
[36] void test_constant<double, custom_constant_sub<double> >(double*, int, char const*) [92] void test_constant<unsigned char, custom_multiple_constant_divide2<unsigned char> >(unsigned char*, int, char const*) [71] void test_constant<unsigned short, custom_multiple_constant_or<unsigned short> >(unsigned short*, int, char const*)
[4] void test_constant<double, custom_constant_divide<double> >(double*, int, char const*) [93] void test_constant<unsigned char, custom_multiple_constant_multiply2<unsigned char> >(unsigned char*, int, char const*) [72] void test_constant<unsigned short, custom_multiple_constant_add<unsigned short> >(unsigned short*, int, char const*)
[38] void test_constant<double, custom_constant_multiply<double> >(double*, int, char const*) [63] void test_constant<int, custom_constant_or<int> >(int*, int, char const*) [73] void test_constant<unsigned short, custom_multiple_constant_and<unsigned short> >(unsigned short*, int, char const*)
[11] void test_constant<double, custom_multiple_constant_add<double> >(double*, int, char const*) [61] void test_constant<int, custom_constant_add<int> >(int*, int, char const*) [74] void test_constant<unsigned short, custom_multiple_constant_sub<unsigned short> >(unsigned short*, int, char const*)
[12] void test_constant<double, custom_multiple_constant_sub<double> >(double*, int, char const*) [64] void test_constant<int, custom_constant_and<int> >(int*, int, char const*) [80] void test_constant<unsigned short, custom_multiple_constant_xor<unsigned short> >(unsigned short*, int, char const*)
[32] void test_constant<double, custom_multiple_constant_mixed<double> >(double*, int, char const*) [65] void test_constant<int, custom_constant_sub<int> >(int*, int, char const*) [81] void test_constant<unsigned short, custom_multiple_constant_mixed<unsigned short> >(unsigned short*, int, char const*)
[2] void test_constant<double, custom_multiple_constant_divide<double> >(double*, int, char const*) [62] void test_constant<int, custom_multiple_constant_sub<int> >(int*, int, char const*) [45] void test_constant<unsigned short, custom_multiple_constant_divide<unsigned short> >(unsigned short*, int, char const*)
[35] void test_constant<double, custom_multiple_constant_divide2<double> >(double*, int, char const*) [58] void test_constant<int, custom_multiple_constant_multiply<int> >(int*, int, char const*) [75] void test_constant<unsigned short, custom_multiple_constant_divide2<unsigned short> >(unsigned short*, int, char const*)
[30] void test_constant<double, custom_multiple_constant_multiply<double> >(double*, int, char const*) [66] void test_constant<int, custom_multiple_constant_multiply2<int> >(int*, int, char const*) [67] void test_constant<unsigned short, custom_multiple_constant_multiply<unsigned short> >(unsigned short*, int, char const*)
[37] void test_constant<double, custom_multiple_constant_multiply2<double> >(double*, int, char const*) [51] void test_constant<short, custom_constant_or<short> >(short*, int, char const*) [76] void test_constant<unsigned short, custom_multiple_constant_multiply2<unsigned short> >(unsigned short*, int, char const*)
[42] void test_constant<float, custom_constant_add<float> >(float*, int, char const*) [22] void test_constant<short, custom_constant_add<short> >(short*, int, char const*) [101] timer()
[43] void test_constant<float, custom_constant_sub<float> >(float*, int, char const*) [52] void test_constant<short, custom_constant_and<short> >(short*, int, char const*) [103] summarize(char const*, int, int, int, int)
[5] void test_constant<float, custom_constant_divide<float> >(float*, int, char const*) [23] void test_constant<short, custom_constant_sub<short> >(short*, int, char const*) [1] main
[39] void test_constant<float, custom_constant_multiply<float> >(float*, int, char const*) [53] void test_constant<short, custom_constant_xor<short> >(short*, int, char const*)
[-- Attachment #7: benchmark_shared_tests.h --]
[-- Type: text/plain, Size: 22535 bytes --]
/*
Copyright 2007-2008 Adobe Systems Incorporated
Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt
or a copy at http://stlab.adobe.com/licenses.html )
Source file for tests shared among several benchmarks
*/
/******************************************************************************/
template<typename T>
inline bool tolerance_equal(T &a, T &b) {
T diff = a - b;
return (abs(diff) < 1.0e-6);
}
template<>
inline bool tolerance_equal(int32_t &a, int32_t &b) {
return (a == b);
}
template<>
inline bool tolerance_equal(uint32_t &a, uint32_t &b) {
return (a == b);
}
template<>
inline bool tolerance_equal(uint64_t &a, uint64_t &b) {
return (a == b);
}
template<>
inline bool tolerance_equal(int64_t &a, int64_t &b) {
return (a == b);
}
template<>
inline bool tolerance_equal(double &a, double &b) {
double diff = a - b;
double reldiff = diff;
if (fabs(a) > 1.0e-8)
reldiff = diff / a;
return (fabs(reldiff) < 1.0e-6);
}
template<>
inline bool tolerance_equal(float &a, float &b) {
float diff = a - b;
double reldiff = diff;
if (fabs(a) > 1.0e-4)
reldiff = diff / a;
return (fabs(reldiff) < 1.0e-3); // single precision divide test is really imprecise
}
/******************************************************************************/
template <typename T, typename Shifter>
inline void check_shifted_sum(T result) {
T temp = (T)SIZE * Shifter::do_shift((T)init_value);
if (!tolerance_equal<T>(result,temp))
printf("test %i failed\n", current_test);
}
template <typename T, typename Shifter>
inline void check_shifted_sum_CSE(T result) {
T temp = (T)0.0;
if (!tolerance_equal<T>(result,temp))
printf("test %i failed\n", current_test);
}
template <typename T, typename Shifter>
inline void check_shifted_variable_sum(T result, T var) {
T temp = (T)SIZE * Shifter::do_shift((T)init_value, var);
if (!tolerance_equal<T>(result,temp))
printf("test %i failed\n", current_test);
}
template <typename T, typename Shifter>
inline void check_shifted_variable_sum(T result, T var1, T var2, T var3, T var4) {
T temp = (T)SIZE * Shifter::do_shift((T)init_value, var1, var2, var3, var4);
if (!tolerance_equal<T>(result,temp))
printf("test %i failed\n", current_test);
}
template <typename T, typename Shifter>
inline void check_shifted_variable_sum_CSE(T result, T var) {
T temp = (T)0.0;
if (!tolerance_equal<T>(result,temp))
printf("test %i failed\n", current_test);
}
template <typename T, typename Shifter>
inline void check_shifted_variable_sum_CSE(T result, T var1, T var2, T var3, T var4) {
T temp = (T)0.0;
if (!tolerance_equal<T>(result,temp))
printf("test %i failed\n", current_test);
}
/******************************************************************************/
template <typename Iterator, typename T>
void fill(Iterator first, Iterator last, T value) {
while (first != last) *first++ = value;
}
/******************************************************************************/
template <typename T>
struct custom_constant_add {
static T do_shift(T input) { return (input + T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_constant_add {
static T do_shift(T input) { return (input + T(1) + T(2) + T(3) + T(4)); }
};
/******************************************************************************/
template <typename T>
struct custom_constant_sub {
static T do_shift(T input) { return (input - T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_constant_sub {
static T do_shift(T input) { return (input - T(1) - T(2) - T(3) - T(4)); }
};
/******************************************************************************/
template <typename T>
struct custom_constant_multiply {
static T do_shift(T input) { return (input * T(120)); }
};
/******************************************************************************/
// this should result in a single multiply
template <typename T>
struct custom_multiple_constant_multiply {
static T do_shift(T input) { return (input * T(2) * T(3) * T(4) * T(5)); }
};
/******************************************************************************/
// this should result in a single add
template <typename T>
struct custom_multiple_constant_multiply2 {
static T do_shift(T input) { return (input + T(2) * T(3) * T(4) * T(5)); }
};
/******************************************************************************/
template <typename T>
struct custom_constant_divide {
static T do_shift(T input) { return (input / T(5)); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_constant_divide {
static T do_shift(T input) { return ((((input / T(2) ) / T(3) ) / T(4)) / T(5)); }
};
/******************************************************************************/
// this more likely to have constants fused than the version above
template <typename T>
struct custom_multiple_constant_divide2 {
static T do_shift(T input) { return (input + (((T(120) / T(3) ) / T(4)) / T(5))); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_constant_mixed {
static T do_shift(T input) { return (input + T(2) - T(3) * T(4) / T(5)); }
};
/******************************************************************************/
template <typename T>
struct custom_constant_and {
static T do_shift(T input) { return (input & T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_constant_and {
static T do_shift(T input) { return (input & T(15) & T(30) & T(31) & T(63)); }
};
/******************************************************************************/
template <typename T>
struct custom_constant_or {
static T do_shift(T input) { return (input | T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_constant_or {
static T do_shift(T input) { return (input | T(15) | T(30) | T(31) | T(63)); }
};
/******************************************************************************/
template <typename T>
struct custom_constant_xor {
static T do_shift(T input) { return (input ^ T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_constant_xor {
static T do_shift(T input) { return (input ^ T(15) ^ T(30) ^ T(31) ^ T(63)); }
};
/******************************************************************************/
template <typename T>
struct custom_two {
static T do_shift(T input) { return (T(2)); }
};
/******************************************************************************/
template <typename T>
struct custom_add_constants {
static T do_shift(T input) { return (T(1) + T(2)); }
};
/******************************************************************************/
template <typename T>
struct custom_sub_constants {
static T do_shift(T input) { return (T(2) - T(1)); }
};
/******************************************************************************/
template <typename T>
struct custom_multiply_constants {
static T do_shift(T input) { return (T(2) * T(3)); }
};
/******************************************************************************/
template <typename T>
struct custom_divide_constants {
static T do_shift(T input) { return (T(20) / T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_mod_constants {
static T do_shift(T input) { return (T(23) % T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_and_constants {
static T do_shift(T input) { return (T(23) & T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_or_constants {
static T do_shift(T input) { return (T(23) | T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_xor_constants {
static T do_shift(T input) { return (T(23) ^ T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_equal_constants {
static T do_shift(T input) { return (T(23) == T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_notequal_constants {
static T do_shift(T input) { return (T(23) != T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_greaterthan_constants {
static T do_shift(T input) { return (T(23) > T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_lessthan_constants {
static T do_shift(T input) { return (T(23) < T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_greaterthanequal_constants {
static T do_shift(T input) { return (T(23) >= T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_lessthanequal_constants {
static T do_shift(T input) { return (T(23) <= T(10)); }
};
/******************************************************************************/
template <typename T>
struct custom_add_variable {
static T do_shift(T input, T v1) { return (input + v1); }
};
/******************************************************************************/
template <typename T>
struct custom_sub_variable {
static T do_shift(T input, T v1) { return (input - v1); }
};
/******************************************************************************/
template <typename T>
struct custom_multiply_variable {
static T do_shift(T input, T v1) { return (input * v1); }
};
/******************************************************************************/
template <typename T>
struct custom_divide_variable {
static T do_shift(T input, T v1) { return (input / v1); }
};
/******************************************************************************/
template <typename T>
struct custom_add_multiple_variable {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input + v1 + v2 + v3 + v4); }
};
/******************************************************************************/
template <typename T>
struct custom_sub_multiple_variable {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input - v1 - v2 - v3 - v4); }
};
/******************************************************************************/
template <typename T>
struct custom_multiply_multiple_variable {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input * v1 * v2 * v3 * v4); }
};
/******************************************************************************/
// something more likely to be moved out of loops, and a sanity check
template <typename T>
struct custom_multiply_multiple_variable2 {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input + v1 * v2 * v3 * v4); }
};
/******************************************************************************/
// this can NOT have CSE and loop invariant motion applied in integer math
// and can only be optimized in float if inexact math is allowed
template <typename T>
struct custom_divide_multiple_variable {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return ((((input / v1 ) / v2 ) / v3) / v4); }
};
/******************************************************************************/
// this can have CSE and loop invariant motion applied in integer math
// this should be optimizeable without inexact math
template <typename T>
struct custom_divide_multiple_variable2 {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input + (((v1 / v2 ) / v3) / v4)); }
};
/******************************************************************************/
template <typename T>
struct custom_mixed_multiple_variable {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input + v1 - v2 * v3 / v4); }
};
/******************************************************************************/
template <typename T>
struct custom_variable_and {
static T do_shift(T input, T v1) { return (input & v1); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_variable_and {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input & v1 & v2 & v3 & v4); }
};
/******************************************************************************/
template <typename T>
struct custom_variable_or {
static T do_shift(T input, T v1) { return (input | v1); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_variable_or {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input | v1 | v2 | v3 | v4); }
};
/******************************************************************************/
template <typename T>
struct custom_variable_xor {
static T do_shift(T input, T v1) { return (input ^ v1); }
};
/******************************************************************************/
template <typename T>
struct custom_multiple_variable_xor {
static T do_shift(T input, T v1, T v2, T v3, T v4) { return (input ^ v1 ^ v2 ^ v3 ^ v4); }
};
/******************************************************************************/
template <typename T>
struct custom_identity {
static T do_shift(T input) { return (input); }
};
/******************************************************************************/
template <typename T>
struct custom_add_zero {
static T do_shift(T input) { return (input + T(0)); }
};
/******************************************************************************/
template <typename T>
struct custom_sub_zero {
static T do_shift(T input) { return (input - T(0)); }
};
/******************************************************************************/
template <typename T>
struct custom_negate {
static T do_shift(T input) { return (-input); }
};
/******************************************************************************/
template <typename T>
struct custom_negate_twice {
static T do_shift(T input) { return (-(-input)); }
};
/******************************************************************************/
template <typename T>
struct custom_zero_minus {
static T do_shift(T input) { return (T(0) - input); }
};
/******************************************************************************/
template <typename T>
struct custom_times_one {
static T do_shift(T input) { return (input * T(1)); }
};
/******************************************************************************/
template <typename T>
struct custom_divideby_one {
static T do_shift(T input) { return (input / T(1)); }
};
/******************************************************************************/
template <typename T>
struct custom_algebra_mixed {
static T do_shift(T input) { return (-(T(0) - (((input + T(0)) - T(0)) / T(1)))) * T(1); }
};
/******************************************************************************/
template <typename T>
struct custom_zero {
static T do_shift(T input) { return T(0); }
};
/******************************************************************************/
template <typename T>
struct custom_times_zero {
static T do_shift(T input) { return (input * T(0)); }
};
/******************************************************************************/
template <typename T>
struct custom_subtract_self {
static T do_shift(T input) { return (input - input); }
};
/******************************************************************************/
template <typename T>
struct custom_algebra_mixed_constant {
static T do_shift(T input) { return (input - (-(T(0) - (((input + T(0)) / T(1)) - T(0)))) * T(1)); }
};
/******************************************************************************/
template <typename T>
struct custom_cse1 {
static T do_shift(T v1, T v2, T v3) { return (v1 * (v2 - v3) ); }
};
/******************************************************************************/
template <typename T>
struct custom_and_self {
static T do_shift(T input) { return (input & input); }
};
/******************************************************************************/
template <typename T>
struct custom_or_self {
static T do_shift(T input) { return (input | input); }
};
/******************************************************************************/
template <typename T>
struct custom_xor_self {
static T do_shift(T input) { return (input ^ input); }
};
/******************************************************************************/
template <typename T>
struct custom_or_zero {
static T do_shift(T input) { return (input | T(0)); }
};
/******************************************************************************/
template <typename T>
struct custom_xor_zero {
static T do_shift(T input) { return (input ^ T(0)); }
};
/******************************************************************************/
template <typename T>
struct custom_andnot_zero {
static T do_shift(T input) { return (input & ~ T(0)); }
};
/******************************************************************************/
template <typename T>
struct custom_and_zero {
static T do_shift(T input) { return (input & T(0)); }
};
/******************************************************************************/
template <typename T>
struct custom_mod_one {
static T do_shift(T input) { return (input % T(1)); }
};
/******************************************************************************/
template <typename T>
struct custom_equal_self {
static T do_shift(T input) { return (input == input); }
};
/******************************************************************************/
template <typename T>
struct custom_notequal_self {
static T do_shift(T input) { return (input != input); }
};
/******************************************************************************/
template <typename T>
struct custom_greaterthan_self {
static T do_shift(T input) { return (input > input); }
};
/******************************************************************************/
template <typename T>
struct custom_lessthan_self {
static T do_shift(T input) { return (input < input); }
};
/******************************************************************************/
template <typename T>
struct custom_greaterthanequal_self {
static T do_shift(T input) { return (input >= input); }
};
/******************************************************************************/
template <typename T>
struct custom_lessthanequal_self {
static T do_shift(T input) { return (input <= input); }
};
/******************************************************************************/
template <typename T, typename Shifter>
void test_constant(T* first, int count, const char *label) {
int i;
start_timer();
for(i = 0; i < iterations; ++i) {
T result = 0;
for (int n = 0; n < count; ++n) {
result += Shifter::do_shift( first[n] );
}
check_shifted_sum<T, Shifter>(result);
}
record_result( timer(), label );
}
/******************************************************************************/
template <typename T, typename Shifter>
void test_variable1(T* first, int count, T v1, const char *label) {
int i;
start_timer();
for(i = 0; i < iterations; ++i) {
T result = 0;
for (int n = 0; n < count; ++n) {
result += Shifter::do_shift( first[n], v1 );
}
check_shifted_variable_sum<T, Shifter>(result, v1);
}
record_result( timer(), label );
}
/******************************************************************************/
template <typename T, typename Shifter>
void test_variable4(T* first, int count, T v1, T v2, T v3, T v4, const char *label) {
int i;
start_timer();
for(i = 0; i < iterations; ++i) {
T result = 0;
for (int n = 0; n < count; ++n) {
result += Shifter::do_shift( first[n], v1, v2, v3, v4 );
}
check_shifted_variable_sum<T, Shifter>(result, v1, v2, v3, v4);
}
record_result( timer(), label );
}
/******************************************************************************/
template <typename T, typename Shifter>
void test_CSE_opt(T* first, int count, T v1, const char *label) {
int i;
start_timer();
for(i = 0; i < iterations; ++i) {
T result = 0;
T temp = Shifter::do_shift( v1, first[0], first[1] );
temp += temp;
result += first[0] + temp;
result -= first[1] + temp;
for (int n = 1; n < count; ++n) {
temp = Shifter::do_shift( v1, first[n-1], first[n] );
temp += temp;
result += first[n-1] + temp;
result -= first[n] + temp;
}
check_shifted_variable_sum_CSE<T, Shifter>(result, v1);
}
record_result( timer(), label );
}
/******************************************************************************/
template <typename T, typename Shifter>
void test_CSE(T* first, int count, T v1, const char *label) {
int i;
start_timer();
for(i = 0; i < iterations; ++i) {
T result = 0;
result += first[0] + Shifter::do_shift( v1, first[0], first[1] ) + Shifter::do_shift( v1, first[0], first[1] );
result -= first[1] + Shifter::do_shift( v1, first[0], first[1] ) + Shifter::do_shift( v1, first[0], first[1] );
for (int n = 1; n < count; ++n) {
result += first[n-1] + Shifter::do_shift( v1, first[n-1], first[n] ) + Shifter::do_shift( v1, first[n-1], first[n] );
result -= first[n] + Shifter::do_shift( v1, first[n-1], first[n] ) + Shifter::do_shift( v1, first[n-1], first[n] );
}
check_shifted_variable_sum_CSE<T, Shifter>(result, v1);
}
record_result( timer(), label );
}
/******************************************************************************/
^ permalink raw reply [flat|nested] 22+ messages in thread