refactor gradient stage names

This is just a name refactor and I'm happy to delay it until we're done
with the current wave of gradient CLs.  The main ideas:

  - we use the "linear_gradient" stages for all gradients,
    so cut the "linear" and just call them "gradient";

  - remind ourselves that the 2-stop stage requires even spacing, i.e.
    stops at 0 and 1.  This name should harmonize with Herb's new
    general evenly spaced gradient stage, currently
    "evenly_spaced_linear_gradient", and after it lands and I rebase,
    "evenly_spaced_gradient"

  - remind ourselves which polar coordinate xy_to_polar_unit returns,
    the angle.

Change-Id: I0fd0c8bd4c1ead7d2d0fff45a199d318b71f34ac
Reviewed-on: https://skia-review.googlesource.com/16500
Commit-Queue: Mike Klein <mtklein@chromium.org>
Reviewed-by: Mike Reed <reed@google.com>
This commit is contained in:
Mike Klein 2017-05-11 10:59:22 -04:00 committed by Skia Commit-Bot
parent df3a371c90
commit 5c7960be57
6 changed files with 136 additions and 136 deletions

View File

@ -96,9 +96,9 @@
M(bicubic_n3x) M(bicubic_n1x) M(bicubic_p1x) M(bicubic_p3x) \
M(bicubic_n3y) M(bicubic_n1y) M(bicubic_p1y) M(bicubic_p3y) \
M(save_xy) M(accumulate) \
M(linear_gradient) \
M(linear_gradient_2stops) \
M(xy_to_polar_unit) \
M(gradient) \
M(evenly_spaced_2_stop_gradient) \
M(xy_to_unit_angle) \
M(xy_to_radius) \
M(byte_tables) M(byte_tables_rgb) \
M(rgb_to_hsl) \

View File

@ -380,7 +380,7 @@ bool SkGradientShaderBase::onAppendStages(SkRasterPipeline* p,
if (!fOrigPos) {
// We clamp only when the stops are evenly spaced.
// If not, there may be hard stops, and clamping ruins hard stops at 0 and/or 1.
// In that case, we must make sure we're using the general linear_gradient stage,
// In that case, we must make sure we're using the general "gradient" stage,
// which is the only stage that will correctly handle unclamped t.
p->append(SkRasterPipeline::clamp_x, alloc->make<float>(1));
}
@ -404,7 +404,7 @@ bool SkGradientShaderBase::onAppendStages(SkRasterPipeline* p,
f_and_b[0] = SkPM4f::From4f(c_r.to4f() - c_l.to4f());
f_and_b[1] = c_l;
p->append(SkRasterPipeline::linear_gradient_2stops, f_and_b);
p->append(SkRasterPipeline::evenly_spaced_2_stop_gradient, f_and_b);
} else {
struct Stop { float t; SkPM4f f, b; };
@ -493,7 +493,7 @@ bool SkGradientShaderBase::onAppendStages(SkRasterPipeline* p,
ctx->stops = stopsArray;
}
p->append(SkRasterPipeline::linear_gradient, ctx);
p->append(SkRasterPipeline::gradient, ctx);
}
if (!premulGrad && !this->colorsAreOpaque()) {

View File

@ -315,7 +315,7 @@ bool SkSweepGradient::adjustMatrixAndAppendStages(SkArenaAlloc* alloc,
SkMatrix* matrix,
SkRasterPipeline* p) const {
matrix->postTranslate(-fCenter.fX, -fCenter.fY);
p->append(SkRasterPipeline::xy_to_polar_unit);
p->append(SkRasterPipeline::xy_to_unit_angle);
return true;
}

View File

@ -3485,10 +3485,10 @@ _sk_matrix_perspective_aarch64:
.long 0x6e32de80 // fmul v0.4s, v20.4s, v18.4s
.long 0xd61f0060 // br x3
HIDDEN _sk_linear_gradient_aarch64
.globl _sk_linear_gradient_aarch64
FUNCTION(_sk_linear_gradient_aarch64)
_sk_linear_gradient_aarch64:
HIDDEN _sk_gradient_aarch64
.globl _sk_gradient_aarch64
FUNCTION(_sk_gradient_aarch64)
_sk_gradient_aarch64:
.long 0xf9400029 // ldr x9, [x1]
.long 0x91004128 // add x8, x9, #0x10
.long 0x9100512a // add x10, x9, #0x14
@ -3499,7 +3499,7 @@ _sk_linear_gradient_aarch64:
.long 0x4d40c902 // ld1r {v2.4s}, [x8]
.long 0xf9400128 // ldr x8, [x9]
.long 0x4d40c943 // ld1r {v3.4s}, [x10]
.long 0xb40006c8 // cbz x8, 2f58 <sk_linear_gradient_aarch64+0x100>
.long 0xb40006c8 // cbz x8, 2f58 <sk_gradient_aarch64+0x100>
.long 0x6dbf23e9 // stp d9, d8, [sp, #-16]!
.long 0xf9400529 // ldr x9, [x9, #8]
.long 0x6f00e413 // movi v19.2d, #0x0
@ -3550,9 +3550,9 @@ _sk_linear_gradient_aarch64:
.long 0xd1000508 // sub x8, x8, #0x1
.long 0x6e771fd0 // bsl v16.16b, v30.16b, v23.16b
.long 0x91009129 // add x9, x9, #0x24
.long 0xb5fffaa8 // cbnz x8, 2ea0 <sk_linear_gradient_aarch64+0x48>
.long 0xb5fffaa8 // cbnz x8, 2ea0 <sk_gradient_aarch64+0x48>
.long 0x6cc123e9 // ldp d9, d8, [sp], #16
.long 0x14000005 // b 2f68 <sk_linear_gradient_aarch64+0x110>
.long 0x14000005 // b 2f68 <sk_gradient_aarch64+0x110>
.long 0x6f00e414 // movi v20.2d, #0x0
.long 0x6f00e412 // movi v18.2d, #0x0
.long 0x6f00e411 // movi v17.2d, #0x0
@ -3566,10 +3566,10 @@ _sk_linear_gradient_aarch64:
.long 0x4eb01e00 // mov v0.16b, v16.16b
.long 0xd61f0060 // br x3
HIDDEN _sk_linear_gradient_2stops_aarch64
.globl _sk_linear_gradient_2stops_aarch64
FUNCTION(_sk_linear_gradient_2stops_aarch64)
_sk_linear_gradient_2stops_aarch64:
HIDDEN _sk_evenly_spaced_2_stop_gradient_aarch64
.globl _sk_evenly_spaced_2_stop_gradient_aarch64
FUNCTION(_sk_evenly_spaced_2_stop_gradient_aarch64)
_sk_evenly_spaced_2_stop_gradient_aarch64:
.long 0xa8c10c28 // ldp x8, x3, [x1], #16
.long 0xaa0803e9 // mov x9, x8
.long 0x9100410a // add x10, x8, #0x10
@ -3590,10 +3590,10 @@ _sk_linear_gradient_2stops_aarch64:
.long 0x4eb01e00 // mov v0.16b, v16.16b
.long 0xd61f0060 // br x3
HIDDEN _sk_xy_to_polar_unit_aarch64
.globl _sk_xy_to_polar_unit_aarch64
FUNCTION(_sk_xy_to_polar_unit_aarch64)
_sk_xy_to_polar_unit_aarch64:
HIDDEN _sk_xy_to_unit_angle_aarch64
.globl _sk_xy_to_unit_angle_aarch64
FUNCTION(_sk_xy_to_unit_angle_aarch64)
_sk_xy_to_unit_angle_aarch64:
.long 0x52b77ce8 // mov w8, #0xbbe70000
.long 0x72856de8 // movk w8, #0x2b6f
.long 0x4ea0f810 // fabs v16.4s, v0.4s
@ -7816,10 +7816,10 @@ _sk_matrix_perspective_vfp4:
.long 0xe8bd4010 // pop {r4, lr}
.long 0xe12fff1c // bx ip
HIDDEN _sk_linear_gradient_vfp4
.globl _sk_linear_gradient_vfp4
FUNCTION(_sk_linear_gradient_vfp4)
_sk_linear_gradient_vfp4:
HIDDEN _sk_gradient_vfp4
.globl _sk_gradient_vfp4
FUNCTION(_sk_gradient_vfp4)
_sk_gradient_vfp4:
.long 0xe92d4010 // push {r4, lr}
.long 0xe591e000 // ldr lr, [r1]
.long 0xe28e3014 // add r3, lr, #20
@ -7832,7 +7832,7 @@ _sk_linear_gradient_vfp4:
.long 0xe494c00c // ldr ip, [r4], #12
.long 0xf4a41c9f // vld1.32 {d1[]}, [r4 :32]
.long 0xe35c0000 // cmp ip, #0
.long 0x0a000036 // beq 3548 <sk_linear_gradient_vfp4+0x110>
.long 0x0a000036 // beq 3548 <sk_gradient_vfp4+0x110>
.long 0xe59e3004 // ldr r3, [lr, #4]
.long 0xf2c01010 // vmov.i32 d17, #0
.long 0xf2c07010 // vmov.i32 d23, #0
@ -7882,12 +7882,12 @@ _sk_linear_gradient_vfp4:
.long 0xf26371b3 // vorr d23, d19, d19
.long 0xf26481b4 // vorr d24, d20, d20
.long 0xf26561b5 // vorr d22, d21, d21
.long 0x1affffd3 // bne 3484 <sk_linear_gradient_vfp4+0x4c>
.long 0x1affffd3 // bne 3484 <sk_gradient_vfp4+0x4c>
.long 0xf26c01bc // vorr d16, d28, d28
.long 0xf22b11bb // vorr d1, d27, d27
.long 0xf22a21ba // vorr d2, d26, d26
.long 0xf22931b9 // vorr d3, d25, d25
.long 0xea000003 // b 3558 <sk_linear_gradient_vfp4+0x120>
.long 0xea000003 // b 3558 <sk_gradient_vfp4+0x120>
.long 0xf2c05010 // vmov.i32 d21, #0
.long 0xf2c04010 // vmov.i32 d20, #0
.long 0xf2c03010 // vmov.i32 d19, #0
@ -7902,10 +7902,10 @@ _sk_linear_gradient_vfp4:
.long 0xe8bd4010 // pop {r4, lr}
.long 0xe12fff13 // bx r3
HIDDEN _sk_linear_gradient_2stops_vfp4
.globl _sk_linear_gradient_2stops_vfp4
FUNCTION(_sk_linear_gradient_2stops_vfp4)
_sk_linear_gradient_2stops_vfp4:
HIDDEN _sk_evenly_spaced_2_stop_gradient_vfp4
.globl _sk_evenly_spaced_2_stop_gradient_vfp4
FUNCTION(_sk_evenly_spaced_2_stop_gradient_vfp4)
_sk_evenly_spaced_2_stop_gradient_vfp4:
.long 0xe92d4010 // push {r4, lr}
.long 0xe8911008 // ldm r1, {r3, ip}
.long 0xe2811008 // add r1, r1, #8
@ -7932,10 +7932,10 @@ _sk_linear_gradient_2stops_vfp4:
.long 0xe8bd4010 // pop {r4, lr}
.long 0xe12fff1c // bx ip
HIDDEN _sk_xy_to_polar_unit_vfp4
.globl _sk_xy_to_polar_unit_vfp4
FUNCTION(_sk_xy_to_polar_unit_vfp4)
_sk_xy_to_polar_unit_vfp4:
HIDDEN _sk_xy_to_unit_angle_vfp4
.globl _sk_xy_to_unit_angle_vfp4
FUNCTION(_sk_xy_to_unit_angle_vfp4)
_sk_xy_to_unit_angle_vfp4:
.long 0xed2d8b06 // vpush {d8-d10}
.long 0xf3f90701 // vabs.f32 d16, d1
.long 0xeddf3b24 // vldr d19, [pc, #144]
@ -12350,10 +12350,10 @@ _sk_matrix_perspective_hsw:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_hsw
.globl _sk_linear_gradient_hsw
FUNCTION(_sk_linear_gradient_hsw)
_sk_linear_gradient_hsw:
HIDDEN _sk_gradient_hsw
.globl _sk_gradient_hsw
FUNCTION(_sk_gradient_hsw)
_sk_gradient_hsw:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
.byte 196,98,125,24,88,20 // vbroadcastss 0x14(%rax),%ymm11
@ -12361,7 +12361,7 @@ _sk_linear_gradient_hsw:
.byte 196,98,125,24,72,28 // vbroadcastss 0x1c(%rax),%ymm9
.byte 76,139,0 // mov (%rax),%r8
.byte 77,133,192 // test %r8,%r8
.byte 15,132,143,0,0,0 // je 3f01 <_sk_linear_gradient_hsw+0xb5>
.byte 15,132,143,0,0,0 // je 3f01 <_sk_gradient_hsw+0xb5>
.byte 72,139,64,8 // mov 0x8(%rax),%rax
.byte 72,131,192,32 // add $0x20,%rax
.byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
@ -12388,8 +12388,8 @@ _sk_linear_gradient_hsw:
.byte 196,67,13,74,201,208 // vblendvps %ymm13,%ymm9,%ymm14,%ymm9
.byte 72,131,192,36 // add $0x24,%rax
.byte 73,255,200 // dec %r8
.byte 117,140 // jne 3e8b <_sk_linear_gradient_hsw+0x3f>
.byte 235,17 // jmp 3f12 <_sk_linear_gradient_hsw+0xc6>
.byte 117,140 // jne 3e8b <_sk_gradient_hsw+0x3f>
.byte 235,17 // jmp 3f12 <_sk_gradient_hsw+0xc6>
.byte 197,244,87,201 // vxorps %ymm1,%ymm1,%ymm1
.byte 197,236,87,210 // vxorps %ymm2,%ymm2,%ymm2
.byte 197,228,87,219 // vxorps %ymm3,%ymm3,%ymm3
@ -12402,10 +12402,10 @@ _sk_linear_gradient_hsw:
.byte 197,124,41,192 // vmovaps %ymm8,%ymm0
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_2stops_hsw
.globl _sk_linear_gradient_2stops_hsw
FUNCTION(_sk_linear_gradient_2stops_hsw)
_sk_linear_gradient_2stops_hsw:
HIDDEN _sk_evenly_spaced_2_stop_gradient_hsw
.globl _sk_evenly_spaced_2_stop_gradient_hsw
FUNCTION(_sk_evenly_spaced_2_stop_gradient_hsw)
_sk_evenly_spaced_2_stop_gradient_hsw:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
.byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
@ -12423,10 +12423,10 @@ _sk_linear_gradient_2stops_hsw:
.byte 197,124,41,192 // vmovaps %ymm8,%ymm0
.byte 255,224 // jmpq *%rax
HIDDEN _sk_xy_to_polar_unit_hsw
.globl _sk_xy_to_polar_unit_hsw
FUNCTION(_sk_xy_to_polar_unit_hsw)
_sk_xy_to_polar_unit_hsw:
HIDDEN _sk_xy_to_unit_angle_hsw
.globl _sk_xy_to_unit_angle_hsw
FUNCTION(_sk_xy_to_unit_angle_hsw)
_sk_xy_to_unit_angle_hsw:
.byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
.byte 197,60,92,200 // vsubps %ymm0,%ymm8,%ymm9
.byte 197,52,84,200 // vandps %ymm0,%ymm9,%ymm9
@ -18579,10 +18579,10 @@ _sk_matrix_perspective_avx:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_avx
.globl _sk_linear_gradient_avx
FUNCTION(_sk_linear_gradient_avx)
_sk_linear_gradient_avx:
HIDDEN _sk_gradient_avx
.globl _sk_gradient_avx
FUNCTION(_sk_gradient_avx)
_sk_gradient_avx:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 196,98,125,24,64,16 // vbroadcastss 0x10(%rax),%ymm8
.byte 196,226,125,24,72,20 // vbroadcastss 0x14(%rax),%ymm1
@ -18590,7 +18590,7 @@ _sk_linear_gradient_avx:
.byte 196,226,125,24,88,28 // vbroadcastss 0x1c(%rax),%ymm3
.byte 76,139,0 // mov (%rax),%r8
.byte 77,133,192 // test %r8,%r8
.byte 15,132,146,0,0,0 // je 55c1 <_sk_linear_gradient_avx+0xb8>
.byte 15,132,146,0,0,0 // je 55c1 <_sk_gradient_avx+0xb8>
.byte 72,139,64,8 // mov 0x8(%rax),%rax
.byte 72,131,192,32 // add $0x20,%rax
.byte 196,65,28,87,228 // vxorps %ymm12,%ymm12,%ymm12
@ -18617,8 +18617,8 @@ _sk_linear_gradient_avx:
.byte 196,227,13,74,219,208 // vblendvps %ymm13,%ymm3,%ymm14,%ymm3
.byte 72,131,192,36 // add $0x24,%rax
.byte 73,255,200 // dec %r8
.byte 117,140 // jne 554b <_sk_linear_gradient_avx+0x42>
.byte 235,20 // jmp 55d5 <_sk_linear_gradient_avx+0xcc>
.byte 117,140 // jne 554b <_sk_gradient_avx+0x42>
.byte 235,20 // jmp 55d5 <_sk_gradient_avx+0xcc>
.byte 196,65,36,87,219 // vxorps %ymm11,%ymm11,%ymm11
.byte 196,65,44,87,210 // vxorps %ymm10,%ymm10,%ymm10
.byte 196,65,52,87,201 // vxorps %ymm9,%ymm9,%ymm9
@ -18635,10 +18635,10 @@ _sk_linear_gradient_avx:
.byte 197,124,41,192 // vmovaps %ymm8,%ymm0
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_2stops_avx
.globl _sk_linear_gradient_2stops_avx
FUNCTION(_sk_linear_gradient_2stops_avx)
_sk_linear_gradient_2stops_avx:
HIDDEN _sk_evenly_spaced_2_stop_gradient_avx
.globl _sk_evenly_spaced_2_stop_gradient_avx
FUNCTION(_sk_evenly_spaced_2_stop_gradient_avx)
_sk_evenly_spaced_2_stop_gradient_avx:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 196,226,125,24,8 // vbroadcastss (%rax),%ymm1
.byte 196,226,125,24,80,16 // vbroadcastss 0x10(%rax),%ymm2
@ -18660,10 +18660,10 @@ _sk_linear_gradient_2stops_avx:
.byte 197,124,41,192 // vmovaps %ymm8,%ymm0
.byte 255,224 // jmpq *%rax
HIDDEN _sk_xy_to_polar_unit_avx
.globl _sk_xy_to_polar_unit_avx
FUNCTION(_sk_xy_to_polar_unit_avx)
_sk_xy_to_polar_unit_avx:
HIDDEN _sk_xy_to_unit_angle_avx
.globl _sk_xy_to_unit_angle_avx
FUNCTION(_sk_xy_to_unit_angle_avx)
_sk_xy_to_unit_angle_avx:
.byte 196,65,60,87,192 // vxorps %ymm8,%ymm8,%ymm8
.byte 197,60,92,200 // vsubps %ymm0,%ymm8,%ymm9
.byte 197,52,84,200 // vandps %ymm0,%ymm9,%ymm9
@ -23549,10 +23549,10 @@ _sk_matrix_perspective_sse41:
.byte 65,15,40,201 // movaps %xmm9,%xmm1
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_sse41
.globl _sk_linear_gradient_sse41
FUNCTION(_sk_linear_gradient_sse41)
_sk_linear_gradient_sse41:
HIDDEN _sk_gradient_sse41
.globl _sk_gradient_sse41
FUNCTION(_sk_gradient_sse41)
_sk_gradient_sse41:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 243,68,15,16,80,16 // movss 0x10(%rax),%xmm10
.byte 69,15,198,210,0 // shufps $0x0,%xmm10,%xmm10
@ -23564,7 +23564,7 @@ _sk_linear_gradient_sse41:
.byte 69,15,198,237,0 // shufps $0x0,%xmm13,%xmm13
.byte 72,139,8 // mov (%rax),%rcx
.byte 72,133,201 // test %rcx,%rcx
.byte 15,132,254,0,0,0 // je 3d7b <_sk_linear_gradient_sse41+0x138>
.byte 15,132,254,0,0,0 // je 3d7b <_sk_gradient_sse41+0x138>
.byte 15,41,100,36,168 // movaps %xmm4,-0x58(%rsp)
.byte 15,41,108,36,184 // movaps %xmm5,-0x48(%rsp)
.byte 15,41,116,36,200 // movaps %xmm6,-0x38(%rsp)
@ -23614,12 +23614,12 @@ _sk_linear_gradient_sse41:
.byte 15,40,196 // movaps %xmm4,%xmm0
.byte 72,131,192,36 // add $0x24,%rax
.byte 72,255,201 // dec %rcx
.byte 15,133,65,255,255,255 // jne 3ca6 <_sk_linear_gradient_sse41+0x63>
.byte 15,133,65,255,255,255 // jne 3ca6 <_sk_gradient_sse41+0x63>
.byte 15,40,124,36,216 // movaps -0x28(%rsp),%xmm7
.byte 15,40,116,36,200 // movaps -0x38(%rsp),%xmm6
.byte 15,40,108,36,184 // movaps -0x48(%rsp),%xmm5
.byte 15,40,100,36,168 // movaps -0x58(%rsp),%xmm4
.byte 235,13 // jmp 3d88 <_sk_linear_gradient_sse41+0x145>
.byte 235,13 // jmp 3d88 <_sk_gradient_sse41+0x145>
.byte 15,87,201 // xorps %xmm1,%xmm1
.byte 15,87,210 // xorps %xmm2,%xmm2
.byte 15,87,219 // xorps %xmm3,%xmm3
@ -23636,10 +23636,10 @@ _sk_linear_gradient_sse41:
.byte 65,15,40,193 // movaps %xmm9,%xmm0
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_2stops_sse41
.globl _sk_linear_gradient_2stops_sse41
FUNCTION(_sk_linear_gradient_2stops_sse41)
_sk_linear_gradient_2stops_sse41:
HIDDEN _sk_evenly_spaced_2_stop_gradient_sse41
.globl _sk_evenly_spaced_2_stop_gradient_sse41
FUNCTION(_sk_evenly_spaced_2_stop_gradient_sse41)
_sk_evenly_spaced_2_stop_gradient_sse41:
.byte 68,15,40,192 // movaps %xmm0,%xmm8
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 243,15,16,0 // movss (%rax),%xmm0
@ -23669,10 +23669,10 @@ _sk_linear_gradient_2stops_sse41:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 255,224 // jmpq *%rax
HIDDEN _sk_xy_to_polar_unit_sse41
.globl _sk_xy_to_polar_unit_sse41
FUNCTION(_sk_xy_to_polar_unit_sse41)
_sk_xy_to_polar_unit_sse41:
HIDDEN _sk_xy_to_unit_angle_sse41
.globl _sk_xy_to_unit_angle_sse41
FUNCTION(_sk_xy_to_unit_angle_sse41)
_sk_xy_to_unit_angle_sse41:
.byte 68,15,40,200 // movaps %xmm0,%xmm9
.byte 69,15,87,192 // xorps %xmm8,%xmm8
.byte 15,87,192 // xorps %xmm0,%xmm0
@ -30271,10 +30271,10 @@ _sk_matrix_perspective_sse2:
.byte 65,15,40,201 // movaps %xmm9,%xmm1
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_sse2
.globl _sk_linear_gradient_sse2
FUNCTION(_sk_linear_gradient_sse2)
_sk_linear_gradient_sse2:
HIDDEN _sk_gradient_sse2
.globl _sk_gradient_sse2
FUNCTION(_sk_gradient_sse2)
_sk_gradient_sse2:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 243,68,15,16,72,16 // movss 0x10(%rax),%xmm9
.byte 69,15,198,201,0 // shufps $0x0,%xmm9,%xmm9
@ -30286,7 +30286,7 @@ _sk_linear_gradient_sse2:
.byte 69,15,198,228,0 // shufps $0x0,%xmm12,%xmm12
.byte 72,139,8 // mov (%rax),%rcx
.byte 72,133,201 // test %rcx,%rcx
.byte 15,132,15,1,0,0 // je 4223 <_sk_linear_gradient_sse2+0x149>
.byte 15,132,15,1,0,0 // je 4223 <_sk_gradient_sse2+0x149>
.byte 72,139,64,8 // mov 0x8(%rax),%rax
.byte 72,131,192,32 // add $0x20,%rax
.byte 69,15,87,192 // xorps %xmm8,%xmm8
@ -30347,8 +30347,8 @@ _sk_linear_gradient_sse2:
.byte 69,15,86,231 // orps %xmm15,%xmm12
.byte 72,131,192,36 // add $0x24,%rax
.byte 72,255,201 // dec %rcx
.byte 15,133,8,255,255,255 // jne 4129 <_sk_linear_gradient_sse2+0x4f>
.byte 235,13 // jmp 4230 <_sk_linear_gradient_sse2+0x156>
.byte 15,133,8,255,255,255 // jne 4129 <_sk_gradient_sse2+0x4f>
.byte 235,13 // jmp 4230 <_sk_gradient_sse2+0x156>
.byte 15,87,201 // xorps %xmm1,%xmm1
.byte 15,87,210 // xorps %xmm2,%xmm2
.byte 15,87,219 // xorps %xmm3,%xmm3
@ -30365,10 +30365,10 @@ _sk_linear_gradient_sse2:
.byte 65,15,40,192 // movaps %xmm8,%xmm0
.byte 255,224 // jmpq *%rax
HIDDEN _sk_linear_gradient_2stops_sse2
.globl _sk_linear_gradient_2stops_sse2
FUNCTION(_sk_linear_gradient_2stops_sse2)
_sk_linear_gradient_2stops_sse2:
HIDDEN _sk_evenly_spaced_2_stop_gradient_sse2
.globl _sk_evenly_spaced_2_stop_gradient_sse2
FUNCTION(_sk_evenly_spaced_2_stop_gradient_sse2)
_sk_evenly_spaced_2_stop_gradient_sse2:
.byte 68,15,40,192 // movaps %xmm0,%xmm8
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 243,15,16,0 // movss (%rax),%xmm0
@ -30398,10 +30398,10 @@ _sk_linear_gradient_2stops_sse2:
.byte 72,173 // lods %ds:(%rsi),%rax
.byte 255,224 // jmpq *%rax
HIDDEN _sk_xy_to_polar_unit_sse2
.globl _sk_xy_to_polar_unit_sse2
FUNCTION(_sk_xy_to_polar_unit_sse2)
_sk_xy_to_polar_unit_sse2:
HIDDEN _sk_xy_to_unit_angle_sse2
.globl _sk_xy_to_unit_angle_sse2
FUNCTION(_sk_xy_to_unit_angle_sse2)
_sk_xy_to_unit_angle_sse2:
.byte 68,15,40,192 // movaps %xmm0,%xmm8
.byte 15,87,192 // xorps %xmm0,%xmm0
.byte 69,15,87,201 // xorps %xmm9,%xmm9

View File

@ -3830,8 +3830,8 @@ _sk_matrix_perspective_hsw LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_hsw
_sk_linear_gradient_hsw LABEL PROC
PUBLIC _sk_gradient_hsw
_sk_gradient_hsw LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 196,98,125,24,64,16 ; vbroadcastss 0x10(%rax),%ymm8
DB 196,98,125,24,88,20 ; vbroadcastss 0x14(%rax),%ymm11
@ -3839,7 +3839,7 @@ _sk_linear_gradient_hsw LABEL PROC
DB 196,98,125,24,72,28 ; vbroadcastss 0x1c(%rax),%ymm9
DB 76,139,0 ; mov (%rax),%r8
DB 77,133,192 ; test %r8,%r8
DB 15,132,143,0,0,0 ; je 3fa9 <_sk_linear_gradient_hsw+0xb5>
DB 15,132,143,0,0,0 ; je 3fa9 <_sk_gradient_hsw+0xb5>
DB 72,139,64,8 ; mov 0x8(%rax),%rax
DB 72,131,192,32 ; add $0x20,%rax
DB 196,65,28,87,228 ; vxorps %ymm12,%ymm12,%ymm12
@ -3866,8 +3866,8 @@ _sk_linear_gradient_hsw LABEL PROC
DB 196,67,13,74,201,208 ; vblendvps %ymm13,%ymm9,%ymm14,%ymm9
DB 72,131,192,36 ; add $0x24,%rax
DB 73,255,200 ; dec %r8
DB 117,140 ; jne 3f33 <_sk_linear_gradient_hsw+0x3f>
DB 235,17 ; jmp 3fba <_sk_linear_gradient_hsw+0xc6>
DB 117,140 ; jne 3f33 <_sk_gradient_hsw+0x3f>
DB 235,17 ; jmp 3fba <_sk_gradient_hsw+0xc6>
DB 197,244,87,201 ; vxorps %ymm1,%ymm1,%ymm1
DB 197,236,87,210 ; vxorps %ymm2,%ymm2,%ymm2
DB 197,228,87,219 ; vxorps %ymm3,%ymm3,%ymm3
@ -3880,8 +3880,8 @@ _sk_linear_gradient_hsw LABEL PROC
DB 197,124,41,192 ; vmovaps %ymm8,%ymm0
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_2stops_hsw
_sk_linear_gradient_2stops_hsw LABEL PROC
PUBLIC _sk_evenly_spaced_2_stop_gradient_hsw
_sk_evenly_spaced_2_stop_gradient_hsw LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 196,226,125,24,8 ; vbroadcastss (%rax),%ymm1
DB 196,98,125,24,64,16 ; vbroadcastss 0x10(%rax),%ymm8
@ -3899,8 +3899,8 @@ _sk_linear_gradient_2stops_hsw LABEL PROC
DB 197,124,41,192 ; vmovaps %ymm8,%ymm0
DB 255,224 ; jmpq *%rax
PUBLIC _sk_xy_to_polar_unit_hsw
_sk_xy_to_polar_unit_hsw LABEL PROC
PUBLIC _sk_xy_to_unit_angle_hsw
_sk_xy_to_unit_angle_hsw LABEL PROC
DB 196,65,60,87,192 ; vxorps %ymm8,%ymm8,%ymm8
DB 197,60,92,200 ; vsubps %ymm0,%ymm8,%ymm9
DB 197,52,84,200 ; vandps %ymm0,%ymm9,%ymm9
@ -9842,8 +9842,8 @@ _sk_matrix_perspective_avx LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_avx
_sk_linear_gradient_avx LABEL PROC
PUBLIC _sk_gradient_avx
_sk_gradient_avx LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 196,98,125,24,64,16 ; vbroadcastss 0x10(%rax),%ymm8
DB 196,226,125,24,72,20 ; vbroadcastss 0x14(%rax),%ymm1
@ -9851,7 +9851,7 @@ _sk_linear_gradient_avx LABEL PROC
DB 196,226,125,24,88,28 ; vbroadcastss 0x1c(%rax),%ymm3
DB 76,139,0 ; mov (%rax),%r8
DB 77,133,192 ; test %r8,%r8
DB 15,132,146,0,0,0 ; je 5689 <_sk_linear_gradient_avx+0xb8>
DB 15,132,146,0,0,0 ; je 5689 <_sk_gradient_avx+0xb8>
DB 72,139,64,8 ; mov 0x8(%rax),%rax
DB 72,131,192,32 ; add $0x20,%rax
DB 196,65,28,87,228 ; vxorps %ymm12,%ymm12,%ymm12
@ -9878,8 +9878,8 @@ _sk_linear_gradient_avx LABEL PROC
DB 196,227,13,74,219,208 ; vblendvps %ymm13,%ymm3,%ymm14,%ymm3
DB 72,131,192,36 ; add $0x24,%rax
DB 73,255,200 ; dec %r8
DB 117,140 ; jne 5613 <_sk_linear_gradient_avx+0x42>
DB 235,20 ; jmp 569d <_sk_linear_gradient_avx+0xcc>
DB 117,140 ; jne 5613 <_sk_gradient_avx+0x42>
DB 235,20 ; jmp 569d <_sk_gradient_avx+0xcc>
DB 196,65,36,87,219 ; vxorps %ymm11,%ymm11,%ymm11
DB 196,65,44,87,210 ; vxorps %ymm10,%ymm10,%ymm10
DB 196,65,52,87,201 ; vxorps %ymm9,%ymm9,%ymm9
@ -9896,8 +9896,8 @@ _sk_linear_gradient_avx LABEL PROC
DB 197,124,41,192 ; vmovaps %ymm8,%ymm0
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_2stops_avx
_sk_linear_gradient_2stops_avx LABEL PROC
PUBLIC _sk_evenly_spaced_2_stop_gradient_avx
_sk_evenly_spaced_2_stop_gradient_avx LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 196,226,125,24,8 ; vbroadcastss (%rax),%ymm1
DB 196,226,125,24,80,16 ; vbroadcastss 0x10(%rax),%ymm2
@ -9919,8 +9919,8 @@ _sk_linear_gradient_2stops_avx LABEL PROC
DB 197,124,41,192 ; vmovaps %ymm8,%ymm0
DB 255,224 ; jmpq *%rax
PUBLIC _sk_xy_to_polar_unit_avx
_sk_xy_to_polar_unit_avx LABEL PROC
PUBLIC _sk_xy_to_unit_angle_avx
_sk_xy_to_unit_angle_avx LABEL PROC
DB 196,65,60,87,192 ; vxorps %ymm8,%ymm8,%ymm8
DB 197,60,92,200 ; vsubps %ymm0,%ymm8,%ymm9
DB 197,52,84,200 ; vandps %ymm0,%ymm9,%ymm9
@ -14611,8 +14611,8 @@ _sk_matrix_perspective_sse41 LABEL PROC
DB 65,15,40,201 ; movaps %xmm9,%xmm1
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_sse41
_sk_linear_gradient_sse41 LABEL PROC
PUBLIC _sk_gradient_sse41
_sk_gradient_sse41 LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 243,68,15,16,80,16 ; movss 0x10(%rax),%xmm10
DB 69,15,198,210,0 ; shufps $0x0,%xmm10,%xmm10
@ -14624,7 +14624,7 @@ _sk_linear_gradient_sse41 LABEL PROC
DB 69,15,198,237,0 ; shufps $0x0,%xmm13,%xmm13
DB 72,139,8 ; mov (%rax),%rcx
DB 72,133,201 ; test %rcx,%rcx
DB 15,132,4,1,0,0 ; je 3e44 <_sk_linear_gradient_sse41+0x13e>
DB 15,132,4,1,0,0 ; je 3e44 <_sk_gradient_sse41+0x13e>
DB 72,131,236,88 ; sub $0x58,%rsp
DB 15,41,36,36 ; movaps %xmm4,(%rsp)
DB 15,41,108,36,16 ; movaps %xmm5,0x10(%rsp)
@ -14675,13 +14675,13 @@ _sk_linear_gradient_sse41 LABEL PROC
DB 15,40,196 ; movaps %xmm4,%xmm0
DB 72,131,192,36 ; add $0x24,%rax
DB 72,255,201 ; dec %rcx
DB 15,133,65,255,255,255 ; jne 3d6c <_sk_linear_gradient_sse41+0x66>
DB 15,133,65,255,255,255 ; jne 3d6c <_sk_gradient_sse41+0x66>
DB 15,40,124,36,48 ; movaps 0x30(%rsp),%xmm7
DB 15,40,116,36,32 ; movaps 0x20(%rsp),%xmm6
DB 15,40,108,36,16 ; movaps 0x10(%rsp),%xmm5
DB 15,40,36,36 ; movaps (%rsp),%xmm4
DB 72,131,196,88 ; add $0x58,%rsp
DB 235,13 ; jmp 3e51 <_sk_linear_gradient_sse41+0x14b>
DB 235,13 ; jmp 3e51 <_sk_gradient_sse41+0x14b>
DB 15,87,201 ; xorps %xmm1,%xmm1
DB 15,87,210 ; xorps %xmm2,%xmm2
DB 15,87,219 ; xorps %xmm3,%xmm3
@ -14698,8 +14698,8 @@ _sk_linear_gradient_sse41 LABEL PROC
DB 65,15,40,193 ; movaps %xmm9,%xmm0
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_2stops_sse41
_sk_linear_gradient_2stops_sse41 LABEL PROC
PUBLIC _sk_evenly_spaced_2_stop_gradient_sse41
_sk_evenly_spaced_2_stop_gradient_sse41 LABEL PROC
DB 68,15,40,192 ; movaps %xmm0,%xmm8
DB 72,173 ; lods %ds:(%rsi),%rax
DB 243,15,16,0 ; movss (%rax),%xmm0
@ -14729,8 +14729,8 @@ _sk_linear_gradient_2stops_sse41 LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 255,224 ; jmpq *%rax
PUBLIC _sk_xy_to_polar_unit_sse41
_sk_xy_to_polar_unit_sse41 LABEL PROC
PUBLIC _sk_xy_to_unit_angle_sse41
_sk_xy_to_unit_angle_sse41 LABEL PROC
DB 68,15,40,200 ; movaps %xmm0,%xmm9
DB 69,15,87,192 ; xorps %xmm8,%xmm8
DB 15,87,192 ; xorps %xmm0,%xmm0
@ -21126,8 +21126,8 @@ _sk_matrix_perspective_sse2 LABEL PROC
DB 65,15,40,201 ; movaps %xmm9,%xmm1
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_sse2
_sk_linear_gradient_sse2 LABEL PROC
PUBLIC _sk_gradient_sse2
_sk_gradient_sse2 LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 243,68,15,16,72,16 ; movss 0x10(%rax),%xmm9
DB 69,15,198,201,0 ; shufps $0x0,%xmm9,%xmm9
@ -21139,7 +21139,7 @@ _sk_linear_gradient_sse2 LABEL PROC
DB 69,15,198,228,0 ; shufps $0x0,%xmm12,%xmm12
DB 72,139,8 ; mov (%rax),%rcx
DB 72,133,201 ; test %rcx,%rcx
DB 15,132,15,1,0,0 ; je 42da <_sk_linear_gradient_sse2+0x149>
DB 15,132,15,1,0,0 ; je 42da <_sk_gradient_sse2+0x149>
DB 72,139,64,8 ; mov 0x8(%rax),%rax
DB 72,131,192,32 ; add $0x20,%rax
DB 69,15,87,192 ; xorps %xmm8,%xmm8
@ -21200,8 +21200,8 @@ _sk_linear_gradient_sse2 LABEL PROC
DB 69,15,86,231 ; orps %xmm15,%xmm12
DB 72,131,192,36 ; add $0x24,%rax
DB 72,255,201 ; dec %rcx
DB 15,133,8,255,255,255 ; jne 41e0 <_sk_linear_gradient_sse2+0x4f>
DB 235,13 ; jmp 42e7 <_sk_linear_gradient_sse2+0x156>
DB 15,133,8,255,255,255 ; jne 41e0 <_sk_gradient_sse2+0x4f>
DB 235,13 ; jmp 42e7 <_sk_gradient_sse2+0x156>
DB 15,87,201 ; xorps %xmm1,%xmm1
DB 15,87,210 ; xorps %xmm2,%xmm2
DB 15,87,219 ; xorps %xmm3,%xmm3
@ -21218,8 +21218,8 @@ _sk_linear_gradient_sse2 LABEL PROC
DB 65,15,40,192 ; movaps %xmm8,%xmm0
DB 255,224 ; jmpq *%rax
PUBLIC _sk_linear_gradient_2stops_sse2
_sk_linear_gradient_2stops_sse2 LABEL PROC
PUBLIC _sk_evenly_spaced_2_stop_gradient_sse2
_sk_evenly_spaced_2_stop_gradient_sse2 LABEL PROC
DB 68,15,40,192 ; movaps %xmm0,%xmm8
DB 72,173 ; lods %ds:(%rsi),%rax
DB 243,15,16,0 ; movss (%rax),%xmm0
@ -21249,8 +21249,8 @@ _sk_linear_gradient_2stops_sse2 LABEL PROC
DB 72,173 ; lods %ds:(%rsi),%rax
DB 255,224 ; jmpq *%rax
PUBLIC _sk_xy_to_polar_unit_sse2
_sk_xy_to_polar_unit_sse2 LABEL PROC
PUBLIC _sk_xy_to_unit_angle_sse2
_sk_xy_to_unit_angle_sse2 LABEL PROC
DB 68,15,40,192 ; movaps %xmm0,%xmm8
DB 15,87,192 ; xorps %xmm0,%xmm0
DB 69,15,87,201 ; xorps %xmm9,%xmm9

View File

@ -1034,7 +1034,7 @@ STAGE(matrix_perspective) {
g = G * rcp(Z);
}
STAGE(linear_gradient) {
STAGE(gradient) {
struct Stop { float pos; float f[4], b[4]; };
struct Ctx { size_t n; Stop *stops; float start[4]; };
@ -1062,7 +1062,7 @@ STAGE(linear_gradient) {
a = mad(t, fa, ba);
}
STAGE(linear_gradient_2stops) {
STAGE(evenly_spaced_2_stop_gradient) {
struct Ctx { float f[4], b[4]; };
auto c = (const Ctx*)ctx;
@ -1073,7 +1073,7 @@ STAGE(linear_gradient_2stops) {
a = mad(t, c->f[3], c->b[3]);
}
STAGE(xy_to_polar_unit) {
STAGE(xy_to_unit_angle) {
F X = r,
Y = g;
F xabs = abs_(X),