Represent all sliceable lvalues with LValueSlice class.

This encompasses fixed-index expressions, field-accesses, and now,
simple swizzles as well. The final code generation is the same as
before because we fuse adjacent stores as a peephole optimization,
but this will generate better code when we start using
`swizzle_copy_stack_to_slots` to store lvalues.

Change-Id: I0f70b372bf6c2f626e27158e06b1527fb4e68887
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/647041
Reviewed-by: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Arman Uguray <armansito@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Commit-Queue: Arman Uguray <armansito@google.com>
1 file changed