Go to file
Mike Klein 68d075e18b fix r12
The 3 bits that represent rsp are used as a signaling mechanism to
choose between compact base + disp encoding and full base + disp +
scale*index encoding, one byte longer.  If a base is encoded as rsp in
the MOD R/M byte, an SIB byte follows.

r12 shares its 3 bottom bits with rsp, so we need to treat it like rsp
when deciding whether or not we need an SIB byte.  (As usual registers
r8-15's distinguishing upper bit is carried by a REX/VEX prefix.)

rsp is also treated as a special signal in the index field of the SIB
byte, meaning essentially scale=0, and as a result it's not possible to
use rsp as an index.  It _is_ possible to use r12 as an index, with a
test added here.  This worked without any code change.  It seems the
index=rsp -> scale=0 signal is triggered by all four bits of the index
registger, including the X upper bit from REX/VEX.

I have found these charts useful:
https://wiki.osdev.org/X86-64_Instruction_Encoding#32.2F64-bit_addressing_2

Looking at those charts I noticed that rbp/r13 are also special cases,
so I'm eyeing them warily and will avoid using them for now.

Change-Id: Id78f826a39c060b03000eae7c50c642ef44d57db
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/306237
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Klein <mtklein@google.com>
2020-07-28 19:46:17 +00:00
animations
bench Remove gendered language 2020-07-28 15:02:41 +00:00
bin bin/try: automatically set 'git cl issue' when not found 2020-06-25 17:44:01 +00:00
build/fuchsia [fuchsia] Fix fidlc command. 2020-06-10 03:29:24 +00:00
build_overrides Use Dawn's BUILD.gn instead of defining another one for Skia. 2020-04-13 23:26:31 +00:00
client_utils/android Remove SkBitmapRegionDecoder and SkBRDAllocator 2020-06-01 20:56:29 +00:00
demos.skia.org Modify CanvasKit to work in a Web Worker and add a demo of it in action. 2020-07-21 22:21:06 +00:00
dm Remove subset parameter from making encoded/generator images 2020-07-28 17:33:12 +00:00
docker Fix swiftshader Dockerfile. 2020-07-20 17:17:53 +00:00
docs/examples Remove subset parameter from making encoded/generator images 2020-07-28 17:33:12 +00:00
example Clean up GrContext references in the src/gpu 2020-07-16 14:14:08 +00:00
experimental Remove experimental/Networking code 2020-07-28 13:25:27 +00:00
fuzz add create ddl fuzzer 2020-07-22 20:10:51 +00:00
gm Fix up image-cacherator-from-* GMs for direct context 2020-07-28 19:44:07 +00:00
gn Remove GrSurfacePriv and GrRenderTargetPriv 2020-07-28 13:52:07 +00:00
include Mark sk_abort_no_print [[noreturn]]. 2020-07-28 17:40:31 +00:00
infra Migrate Canary-G3 to task driver 2020-07-28 19:13:27 +00:00
modules Reland "Attach whitespaces to the neighbor unresolved blocks" 2020-07-28 17:19:21 +00:00
platform_tools remove skar_java from skia android projects 2020-07-27 16:17:50 +00:00
resources Remove "master" from lua files 2020-07-28 13:35:37 +00:00
samplecode demo CubicResampler 2020-07-24 20:13:34 +00:00
site Remove gendered language 2020-07-28 15:02:41 +00:00
specs Fix CanvasKit generated documentation to work with emscripten 1.39.16. 2020-05-27 12:23:32 +00:00
src fix r12 2020-07-28 19:46:17 +00:00
tests fix r12 2020-07-28 19:46:17 +00:00
third_party Inclusive language 2020-07-24 13:33:53 +00:00
tools Update Slide::getName to return a const reference. 2020-07-28 17:37:01 +00:00
.clang-format Disable BinPackParameters in .clang-format 2020-03-27 14:32:40 +00:00
.clang-tidy add google-build-namespaces to clang-tidy checks 2018-12-12 16:33:59 +00:00
.gitignore Reland the new module for skia lib for g3 2020-06-23 14:19:13 +00:00
.gn
AUTHORS GCC: fix unknown attribute warnings for no_sanitize 2020-07-06 13:52:22 +00:00
BUILD.gn add create ddl fuzzer 2020-07-22 20:10:51 +00:00
codereview.settings
CONTRIBUTING
CQ_COMMITTERS
DEPS Roll ANGLE from 3f851efa2adc to de309a42385f (16 revisions) 2020-07-28 05:06:37 +00:00
go.mod Update Go Deps 2020-07-25 05:33:32 +00:00
go.sum Update Go Deps 2020-07-25 05:33:32 +00:00
LICENSE LICENSE file: clean up 2019-11-22 21:59:03 +00:00
OWNERS add OWNERS file 2017-12-01 19:50:19 +00:00
PRESUBMIT.py PRESUBMIT: Don't check formatting of deleted files 2020-04-08 10:36:09 +00:00
public.bzl Reland #3 "ICU API: only in SkParagraph, simplified." 2020-07-24 13:28:52 +00:00
README
README.chromium
RELEASE_NOTES.txt Remove unnecessary macros from SkString header. 2020-07-28 15:00:21 +00:00
whitespace.txt Whitespace change to re-trigger Mac/iOS tests 2020-02-23 20:55:01 +00:00

Skia is a complete 2D graphic library for drawing Text, Geometries, and Images.

See full details, and build instructions, at https://skia.org.