skia2/include/private
Mike Klein 9a885b27f3 pass SkVx::Vec arguments as const&
Yet another surprising finding when looking at ARM code generation is
that passing these values to functions by const& does make a difference,
even when fully inlined.  I can only guess that the compiler's somehow
more sure that way that the values won't change?  Anyway, convert all
skvx functions that take Vec arguments to take const Vec& instead.

This tweak is enough to let the natural implementation of mull()
actually produce good code generation, so I've promoted that to SkVx.h
and added a unit test.  Notice in the NEON case we've got a base case at
N=8 and two recursive cases, one down to 8 as usual when N > 8, but also
one up to 8 when N < 8.

This also is another big speedup for ARMv7 NEON, bringing it to nearly
the same speed as ARMv8 NEON on the same device.

Bug: chromium:952502
Change-Id: I0f19bab45cf02222ccc8090053ea2a4a380f1dfe
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/208582
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Auto-Submit: Mike Klein <mtklein@google.com>
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
2019-04-16 19:24:50 +00:00
..
GrAuditTrail.h Converting more debug code to SkJSONWriter 2019-01-28 19:06:06 +00:00
GrCCClipPath.h skia: Fix -Wextra-semi warnings in non-dcheck builds. 2019-02-28 18:54:50 +00:00
GrCCPerOpListPaths.h include: whitespace changes for clang-format 2018-09-19 14:54:57 +00:00
GrColor.h Move responsibility to onMakeContext for device colorspace decision 2019-02-28 22:50:02 +00:00
GrContext_Base.h Unblock Flutter 2019-03-18 15:49:30 +00:00
GrImageContext.h Plumb abandonment throughout GrContext hierarchy 2019-02-11 20:26:22 +00:00
GrOpList.h Plumb sk_sp through the GrOpList class hierarchy 2019-04-15 12:21:45 +00:00
GrProxyRef.h Reland "Move GrGeometryProcessor's textures out of classes and into" 2018-08-07 14:02:49 +00:00
GrRecordingContext.h Revert "Always try to reduce opList splitting in DDL contexts/drawingManagers" 2019-03-12 16:29:14 +00:00
GrRenderTargetProxy.h Temporarily restore old behavior of read/writeSurfacePixels 2019-04-01 13:35:57 +00:00
GrResourceKey.h Revert "Revert "Reuse GrTexture instances when the same GrBackendTexture is used to"" 2019-01-10 17:51:21 +00:00
GrSharedEnums.h sksl enum support 2017-11-13 14:36:40 +00:00
GrSingleOwner.h Reland of Make a single GrSingleOwner in GrContext (patchset #1 id:1 of https://codereview.chromium.org/1565303003/ ) 2016-01-08 10:09:13 -08:00
GrSkSLFPFactoryCache.h Revert "replace SkNVRefCnt with SkRefCnt" 2018-10-30 15:23:06 +00:00
GrSurfaceProxy.h Remove some unused GrSurfaceProxy methods 2019-04-15 12:17:55 +00:00
GrTextureProxy.h Make lazy proxies have 2 modes for proxy/surface key management. 2019-04-01 17:16:43 +00:00
GrTypesPriv.h Reland "Disable coverage counting by default" 2019-03-18 16:22:47 +00:00
GrVkTypesPriv.h Remove include/gpu/vk from include paths. 2018-05-22 19:59:35 +00:00
SkArenaAlloc.h Add explicit to ctor 2018-11-27 18:11:30 +00:00
SkBitmaskEnum.h use std::underlying_type 2019-02-04 16:27:22 +00:00
SkChecksum.h Move SkNoncopyable to include/private. 2018-07-17 21:39:51 +00:00
SkColorData.h move LCD blits to SkBlitter_ARGB32.cpp 2018-11-09 17:03:06 +00:00
SkDeferredDisplayList.h Test YUV images in DDL 2018-10-01 12:12:29 +00:00
SkEncodedInfo.h Remove assert that BGRA and RGBA are not opaque 2019-02-15 19:53:04 +00:00
SkFixed.h Revert "SkMath takes some functions from from SkTypes" 2018-09-07 17:32:54 +00:00
SkFloatBits.h include: whitespace changes for clang-format 2018-09-19 14:54:57 +00:00
SkFloatingPoint.h utility to check if floats are [0...1] 2019-02-27 21:43:31 +00:00
SkHalf.h remove SK_API from private calls 2019-01-23 16:43:11 +00:00
SkImageInfoPriv.h add kRGBA_F16Norm_SkColorType 2019-03-04 21:49:07 +00:00
SkLeanWindows.h SkLeanWindows.h: #include "Windows.h" fewer places 2016-06-07 17:21:10 -07:00
SkMacros.h SkTypes: more into SkMacros 2018-06-12 20:24:43 +00:00
SkMalloc.h add utility for caching char2glyph 2019-04-13 00:03:58 +00:00
SkMessageBus.h ccpr: Use SkMessageBus for thread-safe eviction of cache entries 2018-10-19 00:25:20 +00:00
SkMutex.h Revert "SkMath takes some functions from from SkTypes" 2018-09-07 17:32:54 +00:00
SkNoncopyable.h Move SkNoncopyable to include/private. 2018-07-17 21:39:51 +00:00
SkNx_neon.h minor Sk4px cleanup 2018-12-18 20:46:25 +00:00
SkNx_sse.h minor Sk4px cleanup 2018-12-18 20:46:25 +00:00
SkNx.h add google-build-namespaces to clang-tidy checks 2018-12-12 16:33:59 +00:00
SkOnce.h tweak SkOnce.h header to work around issues with std::atomic::compare_exchange_strong 2016-12-16 22:21:27 +00:00
SkPathRef.h Fix two SkPathRef bugs 2019-03-07 22:59:28 +00:00
SkSafe32.h Revert "SkMath takes some functions from from SkTypes" 2018-09-07 17:32:54 +00:00
SkSafe_math.h Guard against buggy ucrt\math.h. 2016-11-28 15:40:23 +00:00
SkSemaphore.h Revert "SkMath takes some functions from from SkTypes" 2018-09-07 17:32:54 +00:00
SkShadowFlags.h Remove deprecated drawShadow interfaces 2018-02-28 19:07:29 +00:00
SkSpinlock.h Cache GrColorSpaceXforms 2016-10-20 20:47:33 +00:00
SkTArray.h SkTArray: behave a little more like std::vector 2018-10-19 16:41:51 +00:00
SkTDArray.h Remove unused methods from SkTDArray 2018-10-19 21:29:08 +00:00
SkTemplates.h Remove SkAutoTCallIProc. 2018-09-20 17:42:02 +00:00
SkTFitsIn.h Add support for MSVC run-time checks (and control flow guard) 2019-02-04 20:55:24 +00:00
SkTHash.h add SkTHashTable::LookupOrNull() 2019-01-09 18:51:22 +00:00
SkThreadID.h Unify ThreadID. 2015-09-29 14:38:01 -07:00
SkTInternalLList.h Move SkNoncopyable to include/private. 2018-07-17 21:39:51 +00:00
SkTLogic.h use std::underlying_type 2019-02-04 16:27:22 +00:00
SkTo.h Revert "Revert "SkTypes: extract SkTo"" 2018-06-14 14:55:17 +00:00
SkTSearch.h Convert NULL and 0 to nullptr. 2017-08-28 17:48:57 +00:00
SkVx.h pass SkVx::Vec arguments as const& 2019-04-16 19:24:50 +00:00
SkWeakRefCnt.h clean up some odd SkRefCnt features 2018-10-31 20:47:16 +00:00