skia2/src/opts
Mike Klein e0fe62adaa use fourth arg in store128
store128() has been lowered into SkVM Ops strangely (two interlocking
64-bit stores) only because of SkVM's limit of three arguments per Op.
With four arguments we can lower store128() in a straightforward way.

Perhaps surprisingly, I've left the implementations of store128 fairly
naive, with narrower stores than having all this data together in one
place allows.  I do want to follow up here, but not so much because the
speed of store128 is important, rather more so because getting the tools
in place for idiomatic store128 implementations will lead us down a path
with great knock-on effects for more interesting features.

We'll need four adjacent temporary registers to use the ARM-idiomatic
st2.4s/st4.4s approaches for store64/store128, and the idiomatic x86
implementations need multiple temporary registers too.  Once we're able
to manage multiple adjacent registers as a unit, we'll be able to
stretch the idea to things like load64/load128 returning 2 or 4
registers worth of data from a single Op.  And the ultimate goal is in
Half-is-fp16 mode, where we'll be able to fill one register with 16-bit
float/int/mask data and spread any 32-bit data across a register pair.

Change-Id: Ieb20d8b7d00e9d806cb27fd30ebfd50ae9317da7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/355936
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2021-01-20 00:12:06 +00:00
..
Sk4px_NEON.h minor Sk4px cleanup 2018-12-18 20:46:25 +00:00
Sk4px_none.h rewrite includes to not need so much -Ifoo 2019-04-24 16:27:11 +00:00
Sk4px_SSE2.h minor Sk4px cleanup 2018-12-18 20:46:25 +00:00
SkBitmapProcState_opts.h Simplify bitmapprocstate to just store bool for bilerp 2020-11-24 21:51:16 +00:00
SkBlitMask_opts.h Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkBlitRow_opts.h overhaul blit_row_s32a_opaque() 2020-08-29 13:04:30 +00:00
SkChecksum_opts.h Revert "restore murmur3 for older iOS devices" 2020-12-02 22:39:01 +00:00
SkOpts_avx.cpp Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkOpts_crc32.cpp Revert "finish new-style opts" 2020-06-04 14:20:17 +00:00
SkOpts_hsw.cpp Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkOpts_skx.cpp second guess swizzler avx-512 opts 2020-08-28 17:20:59 +00:00
SkOpts_sse41.cpp remove sse4.1 opts level 2020-06-05 12:00:09 +00:00
SkOpts_sse42.cpp Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkOpts_ssse3.cpp Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkRasterPipeline_opts.h macro hygiene in SkRP_opts.h 2021-01-14 16:17:03 +00:00
SkSwizzler_opts.h add missing include 2020-08-28 15:37:29 +00:00
SkUtils_opts.h Enable ClangTidy check llvm-namespace-comment. 2020-08-06 19:07:52 +00:00
SkVM_opts.h use fourth arg in store128 2021-01-20 00:12:06 +00:00
SkXfermode_opts.h Enable ClangTidy check misc-definitions-in-headers. 2020-08-02 18:53:15 +00:00