|
5 | 5 | #include "src/__support/CPP/functional.h"
|
6 | 6 | #include "src/__support/FPUtil/FPBits.h"
|
7 | 7 | #include "src/math/sin.h"
|
| 8 | +#include "src/math/sinf.h" |
8 | 9 | #include "src/stdlib/rand.h"
|
9 | 10 |
|
10 | 11 | #ifdef NVPTX_MATH_FOUND
|
|
19 | 20 | // uint64_t representing the latency. Defining each benchmark using macro that
|
20 | 21 | // expands to a lambda to allow us to switch the implementation of `sin()` to
|
21 | 22 | // easily register NVPTX benchmarks.
|
22 |
| -#define BM_RANDOM_INPUT(Func, MIN_EXP, MAX_EXP, N) \ |
| 23 | +#define BM_RANDOM_INPUT(T, Func, MIN_EXP, MAX_EXP, N) \ |
23 | 24 | []() { \
|
24 |
| - return LIBC_NAMESPACE::benchmarks::MathPerf< \ |
25 |
| - double>::run_throughput_in_range<N>(Func, MIN_EXP, MAX_EXP); \ |
| 25 | + return LIBC_NAMESPACE::benchmarks::MathPerf<T>::run_throughput_in_range< \ |
| 26 | + N>(Func, MIN_EXP, MAX_EXP); \ |
26 | 27 | }
|
27 | 28 |
|
28 |
| -#define BENCH(Name, Func, MIN_EXP, MAX_EXP) \ |
| 29 | +#define BENCH(T, Name, Func, MIN_EXP, MAX_EXP) \ |
29 | 30 | SINGLE_WAVE_BENCHMARK(LlvmLibcSinGpuBenchmark, Name##_1, \
|
30 |
| - BM_RANDOM_INPUT(Func, MIN_EXP, MAX_EXP, 1)); \ |
| 31 | + BM_RANDOM_INPUT(T, Func, MIN_EXP, MAX_EXP, 1)); \ |
31 | 32 | SINGLE_WAVE_BENCHMARK(LlvmLibcSinGpuBenchmark, Name##_128, \
|
32 |
| - BM_RANDOM_INPUT(Func, MIN_EXP, MAX_EXP, 128)); \ |
| 33 | + BM_RANDOM_INPUT(T, Func, MIN_EXP, MAX_EXP, 128)); \ |
33 | 34 | SINGLE_WAVE_BENCHMARK(LlvmLibcSinGpuBenchmark, Name##_1024, \
|
34 |
| - BM_RANDOM_INPUT(Func, MIN_EXP, MAX_EXP, 1024)); \ |
| 35 | + BM_RANDOM_INPUT(T, Func, MIN_EXP, MAX_EXP, 1024)); \ |
35 | 36 | SINGLE_WAVE_BENCHMARK(LlvmLibcSinGpuBenchmark, Name##_4096, \
|
36 |
| - BM_RANDOM_INPUT(Func, MIN_EXP, MAX_EXP, 4096)) |
| 37 | + BM_RANDOM_INPUT(T, Func, MIN_EXP, MAX_EXP, 4096)) |
37 | 38 |
|
38 |
| -BENCH(Sin, LIBC_NAMESPACE::sin, -1023, 1023); |
39 |
| -BENCH(SinTwoPi, LIBC_NAMESPACE::sin, -10, 3); |
40 |
| -BENCH(SinTwoPow30, LIBC_NAMESPACE::sin, 0, 30); |
41 |
| -BENCH(SinVeryLarge, LIBC_NAMESPACE::sin, 30, 1000); |
| 39 | +BENCH(double, Sin, LIBC_NAMESPACE::sin, -1023, 1023); |
| 40 | +BENCH(double, SinTwoPi, LIBC_NAMESPACE::sin, -10, 3); |
| 41 | +BENCH(double, SinTwoPow30, LIBC_NAMESPACE::sin, 0, 30); |
| 42 | +BENCH(double, SinVeryLarge, LIBC_NAMESPACE::sin, 30, 1000); |
42 | 43 |
|
43 | 44 | #ifdef NVPTX_MATH_FOUND
|
44 |
| -BENCH(NvSin, LIBC_NAMESPACE::__nv_sin, -1023, 1023); |
45 |
| -BENCH(NvSinTwoPi, LIBC_NAMESPACE::__nv_sin, -10, 3); |
46 |
| -BENCH(NvSinTwoPow30, LIBC_NAMESPACE::__nv_sin, 0, 30); |
47 |
| -BENCH(NvSinVeryLarge, LIBC_NAMESPACE::__nv_sin, 30, 1000); |
| 45 | +BENCH(double, NvSin, LIBC_NAMESPACE::__nv_sin, -1023, 1023); |
| 46 | +BENCH(double, NvSinTwoPi, LIBC_NAMESPACE::__nv_sin, -10, 3); |
| 47 | +BENCH(double, NvSinTwoPow30, LIBC_NAMESPACE::__nv_sin, 0, 30); |
| 48 | +BENCH(double, NvSinVeryLarge, LIBC_NAMESPACE::__nv_sin, 30, 1000); |
48 | 49 | #endif
|
49 | 50 |
|
50 | 51 | #ifdef AMDGPU_MATH_FOUND
|
51 |
| -BENCH(AmdSin, LIBC_NAMESPACE::__ocml_sin_f64, -1023, 1023); |
52 |
| -BENCH(AmdSinTwoPi, LIBC_NAMESPACE::__ocml_sin_f64, -10, 3); |
53 |
| -BENCH(AmdSinTwoPow30, LIBC_NAMESPACE::__ocml_sin_f64, 0, 30); |
54 |
| -BENCH(AmdSinVeryLarge, LIBC_NAMESPACE::__ocml_sin_f64, 30, 1000); |
| 52 | +BENCH(double, AmdSin, LIBC_NAMESPACE::__ocml_sin_f64, -1023, 1023); |
| 53 | +BENCH(double, AmdSinTwoPi, LIBC_NAMESPACE::__ocml_sin_f64, -10, 3); |
| 54 | +BENCH(double, AmdSinTwoPow30, LIBC_NAMESPACE::__ocml_sin_f64, 0, 30); |
| 55 | +BENCH(double, AmdSinVeryLarge, LIBC_NAMESPACE::__ocml_sin_f64, 30, 1000); |
| 56 | +#endif |
| 57 | + |
| 58 | +BENCH(float, Sinf, LIBC_NAMESPACE::sinf, -127, 128); |
| 59 | +BENCH(float, SinfTwoPi, LIBC_NAMESPACE::sinf, -10, 3); |
| 60 | +BENCH(float, SinfTwoPow30, LIBC_NAMESPACE::sinf, 0, 30); |
| 61 | +BENCH(float, SinfVeryLarge, LIBC_NAMESPACE::sinf, 30, 120); |
| 62 | + |
| 63 | +#ifdef NVPTX_MATH_FOUND |
| 64 | +BENCH(float, NvSinf, LIBC_NAMESPACE::__nv_sinf, -127, 128); |
| 65 | +BENCH(float, NvSinfTwoPi, LIBC_NAMESPACE::__nv_sinf, -10, 3); |
| 66 | +BENCH(float, NvSinfTwoPow30, LIBC_NAMESPACE::__nv_sinf, 0, 30); |
| 67 | +BENCH(float, NvSinfVeryLarge, LIBC_NAMESPACE::__nv_sinf, 30, 120); |
| 68 | +#endif |
| 69 | + |
| 70 | +#ifdef AMDGPU_MATH_FOUND |
| 71 | +BENCH(float, AmdSinf, LIBC_NAMESPACE::__ocml_sin_f32, -127, 128); |
| 72 | +BENCH(float, AmdSinfTwoPi, LIBC_NAMESPACE::__ocml_sin_f32, -10, 3); |
| 73 | +BENCH(float, AmdSinfTwoPow30, LIBC_NAMESPACE::__ocml_sin_f32, 0, 30); |
| 74 | +BENCH(float, AmdSinfVeryLarge, LIBC_NAMESPACE::__ocml_sin_f32, 30, 120); |
55 | 75 | #endif
|
0 commit comments