skia2/bench
mtklein 036e1831e0 Add a bench to measure the best way to pack from int to uint16_t with SSE.
I measured relative runtimes on my laptop:

   pack_int_uint16_t_ss…
   1036  …e41 1x  …se3 1.01x  …e2_b 3.01x  …e2_a 3.02x

I've run into Clang problems with the actual _mm_packus_epi32 instruction, I think,
so I'm going to exercise a little cowardice and leave that option disabled for now.

The ssse3 version probably looks a little faster than it will be in practice.
We'll usually need to load its mask, which here is hoisted out of the bench loop.

The two sse2 variants are close enough in speed that I'm tie breaking them on other
concerns: the <<16, >>16 version doesn't need any scratch registers or to load any
constants, so it wins.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2150343002
CQ_INCLUDE_TRYBOTS=master.client.skia:Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-SKNX_NO_SIMD-Trybot,Test-Ubuntu-GCC-GCE-CPU-AVX2-x86_64-Release-Fast-Trybot

Review-Url: https://codereview.chromium.org/2150343002
2016-07-15 07:45:53 -07:00
..
AAClipBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
AlternatingColorPatternBench.cpp Reland of "Finish conversion to sk_sp<SkShader> (patchset #2 id:20001 of https://codereview.chromium.org/1803763002/ )" 2016-03-14 12:22:10 -07:00
AndroidCodecBench.cpp Add AndroidCodecBench to time scaled decodes 2016-02-11 06:45:51 -08:00
AndroidCodecBench.h Add AndroidCodecBench to time scaled decodes 2016-02-11 06:45:51 -08:00
BenchLogger.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
BenchLogger.h Remove Sk prefix from some bench classes. 2014-06-19 12:32:29 -07:00
Benchmark.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
Benchmark.h Began logging more gpu stats from nanobench 2015-12-02 09:05:38 -08:00
BezierBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
BigPathBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
BitmapBench.cpp Factor code to rotate a canvas about a point. 2016-07-12 15:01:19 -07:00
BitmapRectBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
BitmapRegionDecoderBench.cpp Delete SkBitmapRegionCanvas 2016-05-18 06:23:57 -07:00
BitmapRegionDecoderBench.h Delete SkBitmapRegionCanvas 2016-05-18 06:23:57 -07:00
BitmapScaleBench.cpp Valgrind is not a fan of uninitialized Src pixels. 2016-01-19 12:42:49 -08:00
BlurBench.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
BlurImageFilterBench.cpp Update SkBlurImageFilter to sk_sp 2016-04-04 04:31:25 -07:00
BlurRectBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
BlurRectsBench.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
BlurRoundRectBench.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
ChartBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
check_bench_regressions.py Adds dashboard link for one-line plot on each alert item. 2014-05-13 17:38:17 +00:00
ChecksumBench.cpp SkMD5: .update() -> .write() 2016-04-25 10:29:36 -07:00
ChromeBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
CmapBench.cpp Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
CodecBench.cpp Add --zero_init to simulate zero-initialized memory in CodecBench 2016-01-08 14:20:36 -08:00
CodecBench.h Make CodecBench test kPremul and kUnpremul 2016-01-07 14:20:20 -08:00
CodecBenchPriv.h Make CodecBench test kPremul and kUnpremul 2016-01-07 14:20:20 -08:00
ColorCodecBench.cpp Support sRGB dsts in opt code 2016-06-20 06:07:45 -07:00
ColorCodecBench.h Use SK_TEST_QCMS to mark qcms test code 2016-06-06 08:20:38 -07:00
ColorCubeBench.cpp Reland of [2] of "switch colorfilters to sk_sp (patchset #11 id:200001 of https://codereview.chromium.o… (patchset #1 id:1 of https://codereview.chromium.org/1821103004/ ) 2016-03-22 10:17:23 -07:00
ColorFilterBench.cpp Update SkXfermodeImageFilter to sk_sp 2016-04-05 12:48:34 -07:00
ColorPrivBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
ControlBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
CoverageBench.cpp remove 'deprecated' region from SkDraw 2016-04-27 07:49:17 -07:00
DashBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
DisplacementBench.cpp Update DisplacementMapEffect to sk_sp 2016-04-15 07:17:36 -07:00
DrawBitmapAABench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
EncoderBench.cpp Add bench for image encodes 2016-04-18 12:37:46 -07:00
FontCacheBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
FontScalerBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
FSRectBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
GameBench.cpp Reland of "Finish conversion to sk_sp<SkShader> (patchset #2 id:20001 of https://codereview.chromium.org/1803763002/ )" 2016-03-14 12:22:10 -07:00
GeometryBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
GLBench.cpp Retract GrRenderTarget from GrTestTarget 2016-05-20 11:14:33 -07:00
GLBench.h Remove const from const int loops. 2015-10-01 09:43:39 -07:00
GLInstancedArraysBench.cpp remove explicit 'f' in glbench shader 2015-12-11 08:31:17 -08:00
GLVec4ScalarBench.cpp Make appending default precision be controled by GLSL 2015-10-26 08:38:26 -07:00
GLVertexAttributesBench.cpp Make appending default precision be controled by GLSL 2015-10-26 08:38:26 -07:00
GMBench.cpp Run GM benchs in bench mode 2016-05-16 09:09:18 -07:00
GMBench.h Remove const from const int loops. 2015-10-01 09:43:39 -07:00
GradientBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
GrMemoryPoolBench.cpp Make SkRandom::next[US]Fixed1 private; update documentation for SkRandom::nextSScalar1. 2016-03-31 06:13:22 -07:00
GrMipMapBench.cpp Lots of progress on switching to SkColorSpace rather than SkColorProfileType 2016-06-16 13:03:24 -07:00
GrResourceCacheBench.cpp Refactor to separate backend object lifecycle and GpuResource budget decision 2016-04-22 01:48:29 -07:00
gUniqueGlyphIDs.h switch array to uint16_t to fix overflows 2013-06-11 19:53:19 +00:00
HairlinePathBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
HardStopGradientBench.cpp Add benchmarks for 3 and 4 colors (most common) 2016-07-12 14:45:32 -07:00
ImageBench.cpp switch surface to sk_sp 2016-03-23 18:59:25 -07:00
ImageCacheBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
ImageFilterCollapse.cpp Update SkColorFilterImageFilter to sk_sp 2016-04-05 11:50:42 -07:00
ImageFilterDAGBench.cpp Update DisplacementMapEffect to sk_sp 2016-04-15 07:17:36 -07:00
InterpBench.cpp Reverse dependency between SkScalar.h and SkFixed.h. 2016-04-07 08:49:31 -07:00
LightingBench.cpp Rein in the use of SkDevice.h 2016-04-20 05:29:51 -07:00
LineBench.cpp Revert of Modify LineBench for drawing straight line (patchset #3 id:40001 of https://codereview.chromium.org/1936153002/ ) 2016-05-05 14:02:36 -07:00
MagnifierBench.cpp Update MagnifierImageFilter to sk_sp 2016-04-07 07:34:15 -07:00
MathBench.cpp SkLeanWindows.h: #include "Windows.h" fewer places 2016-06-07 17:21:10 -07:00
Matrix44Bench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
MatrixBench.cpp Revert of change mapRectScaleTranslate to pass args/ret by value (patchset #1 id:1 of https://codereview.chromium.org/2137853002/ ) 2016-07-10 11:45:35 -07:00
MatrixConvolutionBench.cpp distinguish distinct matrixconvolution benchmarks 2016-04-12 15:52:52 -07:00
MemoryBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
MemsetBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
MergeBench.cpp Update SkImageSource to sk_sp 2016-04-01 09:28:51 -07:00
microbench.json Fix the other microbench schema 2014-07-25 08:30:11 -07:00
MipMapBench.cpp respect srgb gamma when building mips 2016-06-10 11:41:47 -07:00
MorphologyBench.cpp Update SkMorphology ImageFilters to sk_sp 2016-04-05 09:09:37 -07:00
MutexBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
nanobench.cpp Remove GrLayerHoister 2016-07-13 13:27:16 -07:00
nanobench.h Lots of progress on switching to SkColorSpace rather than SkColorProfileType 2016-06-16 13:03:24 -07:00
nanobenchAndroid.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
nanobenchAndroid.h Simplify linkages to Android framework internals 2015-10-26 07:21:32 -07:00
pack_int_uint16_t_Bench.cpp Add a bench to measure the best way to pack from int to uint16_t with SSE. 2016-07-15 07:45:53 -07:00
PatchBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
PatchGridBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
PathBench.cpp Benchmark rotated rect with AA/noAA 2016-06-20 14:05:27 -07:00
PathIterBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
PDFBench.cpp SkPDF: alloc less memory for strings 2016-06-23 14:08:11 -07:00
PerlinNoiseBench.cpp move setshader to sk_sp, re-using SK_SUPPORT_LEGACY_CREATESHADER_PTR 2016-03-25 09:08:00 -07:00
PictureNestingBench.cpp return pictures as sk_sp 2016-03-18 07:25:55 -07:00
PictureOverheadBench.cpp return pictures as sk_sp 2016-03-18 07:25:55 -07:00
PicturePlaybackBench.cpp return pictures as sk_sp 2016-03-18 07:25:55 -07:00
PremulAndUnpremulAlphaOpsBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
ReadPixBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
RecordingBench.cpp Remove GrLayerHoister 2016-07-13 13:27:16 -07:00
RecordingBench.h Remove const from const int loops. 2015-10-01 09:43:39 -07:00
RectanizerBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
RectBench.cpp Revert of try to speed-up maprect + round2i + contains (patchset #8 id:140001 of https://codereview.chromium.org/2133413002/ ) 2016-07-11 14:57:26 -07:00
RectoriBench.cpp switch maskfilters to sk_sp 2016-04-04 10:02:58 -07:00
RefCntBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
RegionBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
RegionContainBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
RepeatTileBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
ResultsWriter.h Move SkTArray to include/private. 2016-02-17 13:13:44 -08:00
RotatedRectBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
RTreeBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
ScalarBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
ShaderMaskBench.cpp move setshader to sk_sp, re-using SK_SUPPORT_LEGACY_CREATESHADER_PTR 2016-03-25 09:08:00 -07:00
ShapesBench.cpp Begin instanced rendering for simple shapes 2016-07-07 08:49:11 -07:00
Sk4fBench.cpp Sk4f: add floor() 2016-02-09 15:41:36 -08:00
SkBlend_optsBench.cpp Update SkOpts namespaces. 2016-07-13 08:02:20 -07:00
SkGlyphCacheBench.cpp SkTypeface::MakeFromName to take SkFontStyle. 2016-05-31 11:42:37 -07:00
SkLinearBitmapPipelineBench.cpp update callers to not use SkColorProfileType 2016-06-21 10:28:14 -07:00
SKPAnimationBench.cpp Style Change: NULL->nullptr 2015-08-27 07:41:16 -07:00
SKPAnimationBench.h Make nanobench zoom animation time based 2015-06-29 14:06:10 -07:00
SKPBench.cpp switch surface to sk_sp 2016-03-23 18:59:25 -07:00
SKPBench.h Began logging more gpu stats from nanobench 2015-12-02 09:05:38 -08:00
skpbench.json Fix scale type in JSON format 2014-06-26 15:39:31 -07:00
SkRasterPipelineBench.cpp SkRasterPipeline preliminaries 2016-07-12 15:01:26 -07:00
SortBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
StrokeBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
SwizzleBench.cpp Optimize CMYK->RGBA (BGRA) transform for jpeg decodes 2016-02-08 13:26:25 -08:00
TableBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
TextBench.cpp Move SkTypeface to sk_sp. 2016-05-12 10:09:31 -07:00
TextBlobBench.cpp SkTypeface::MakeFromName to take SkFontStyle. 2016-05-31 11:42:37 -07:00
TileBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
TileImageFilterBench.cpp Update TileImageFilter to sk_sp 2016-04-15 07:57:40 -07:00
TopoSortBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
VertBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
WritePixelsBench.cpp Remove const from const int loops. 2015-10-01 09:43:39 -07:00
WriterBench.cpp Style bikeshed - remove extraneous whitespace 2016-03-29 09:03:53 -07:00
Xfer4fBench.cpp switch xfermodes over to sk_sp 2016-03-29 11:32:50 -07:00
XferF16Bench.cpp remove U16 support, just support F16 2016-04-14 09:02:14 -07:00
XfermodeBench.cpp Add some benches for SkArithmeticMode. 2016-04-08 14:29:47 -07:00