| /* | 
 |  * Copyright 2016 Google Inc. | 
 |  * | 
 |  * Use of this source code is governed by a BSD-style license that can be | 
 |  * found in the LICENSE file. | 
 |  */ | 
 |  | 
 | #include "Benchmark.h" | 
 | #include "SkOpts.h" | 
 | #include "SkRandom.h" | 
 |  | 
 | struct FloatToHalfBench : public Benchmark { | 
 |     const char* onGetName() override { return "float_to_half"; } | 
 |     bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } | 
 |  | 
 |     void onDraw(int loops, SkCanvas* canvas) override { | 
 |         SkRandom rand; | 
 |         float fs[1023]; | 
 |         for (float& f : fs) { | 
 |             f = rand.nextF(); | 
 |         } | 
 |  | 
 |         uint16_t hs[1023]; | 
 |         while (loops --> 0) { | 
 |             SkOpts::float_to_half(hs, fs, 1023); | 
 |         } | 
 |     } | 
 | }; | 
 | DEF_BENCH(return new FloatToHalfBench;) | 
 |  | 
 | struct HalfToFloatBench : public Benchmark { | 
 |     const char* onGetName() override { return "half_to_float"; } | 
 |     bool isSuitableFor(Backend backend) override { return backend == kNonRendering_Backend; } | 
 |  | 
 |     void onDraw(int loops, SkCanvas* canvas) override { | 
 |         SkRandom rand; | 
 |         uint16_t hs[1023]; | 
 |         for (uint16_t& h : hs) { | 
 |             h = rand.nextU16(); | 
 |         } | 
 |  | 
 |         float fs[1023]; | 
 |         while (loops --> 0) { | 
 |             SkOpts::half_to_float(fs, hs, 1023); | 
 |         } | 
 |     } | 
 | }; | 
 | DEF_BENCH(return new HalfToFloatBench;) |