aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/jumper
diff options
context:
space:
mode:
authorGravatar Mike Klein <mtklein@chromium.org>2017-12-11 16:53:26 -0500
committerGravatar Skia Commit-Bot <skia-commit-bot@chromium.org>2017-12-12 12:02:48 +0000
commit376fd31ad485c3df35d934c56364ff0c34eacdfa (patch)
tree054bb198c5a4c540551e9009562d4cda4e16cbdf /src/jumper
parentba096c0dc3ba2bd2e7f3bc765b2c43472b2faf31 (diff)
remove vfpv4 requirement for SkJumper on ARMv7
VFPv4 gives us two interesting features: - FMA - f16<->f32 conversions Even without FMAs, NEON still has non-fused MLA instructions. We don't really care about the fusedness of those mul-adds, so losing FMA here is kind of no big deal. We already maintain portable code to do f16<->f32 conversions, so it's not much of a maintanence hit to use that instead of the native instructions. To my knowledge software F16 rendering is not a performance critical mode of operation for any of our users. This drops our minimum requirement to basically just having NEON. Devices like the Nexus 7 2012 will now take SkJumper fast paths instead of portable code. (Though actually, we've only ever required NEON for _lowp... only the float code also needed vfpv4). The main file to look at here is actually SkJumper_vectors.h, where you will see all the substantive changes. The rest just kind of tears down most of the old complexity, add adds ABI to put just a little of it back. :) Change-Id: Ia9237117698729c91e5fa51126baf80748093bf4 Bug: skia: Reviewed-on: https://skia-review.googlesource.com/83521 Commit-Queue: Mike Klein <mtklein@chromium.org> Reviewed-by: Florin Malita <fmalita@chromium.org>
Diffstat (limited to 'src/jumper')
-rw-r--r--src/jumper/SkJumper.cpp19
-rw-r--r--src/jumper/SkJumper.h39
-rw-r--r--src/jumper/SkJumper_generated.S9454
-rw-r--r--src/jumper/SkJumper_misc.h2
-rw-r--r--src/jumper/SkJumper_stages.cpp42
-rw-r--r--src/jumper/SkJumper_stages_lowp.cpp26
-rw-r--r--src/jumper/SkJumper_vectors.h10
-rwxr-xr-xsrc/jumper/build_stages.py14
8 files changed, 51 insertions, 9555 deletions
diff --git a/src/jumper/SkJumper.cpp b/src/jumper/SkJumper.cpp
index 824e299ea9..4693d66236 100644
--- a/src/jumper/SkJumper.cpp
+++ b/src/jumper/SkJumper.cpp
@@ -78,13 +78,6 @@ extern "C" {
#if !SK_JUMPER_USE_ASSEMBLY
// We'll just run baseline code.
-#elif defined(__arm__)
- StartPipelineFn ASM(start_pipeline,vfp4);
- StageFn ASM(just_return,vfp4);
- #define M(st) StageFn ASM(st,vfp4);
- SK_RASTER_PIPELINE_STAGES(M)
- #undef M
-
#elif defined(__x86_64__) || defined(_M_X64)
StartPipelineFn ASM(start_pipeline, skx),
ASM(start_pipeline, hsw),
@@ -135,7 +128,6 @@ extern "C" {
#undef M
#if defined(JUMPER_HAS_NEON_LOWP)
- // We also compile 8-bit stages on ARMv8 as a normal part of Skia when compiled with Clang.
StartPipelineFn sk_start_pipeline_lowp;
StageFn sk_just_return_lowp;
#define M(st) StageFn sk_##st##_lowp;
@@ -295,17 +287,6 @@ static SkJumper_Engine choose_engine() {
#if !SK_JUMPER_USE_ASSEMBLY
// We'll just run baseline code.
-#elif defined(__arm__)
- if (1 && SkCpu::Supports(SkCpu::NEON|SkCpu::NEON_FMA|SkCpu::VFP_FP16)) {
- return {
- #define M(stage) ASM(stage, vfp4),
- { SK_RASTER_PIPELINE_STAGES(M) },
- M(start_pipeline)
- M(just_return)
- #undef M
- };
- }
-
#elif defined(__x86_64__) || defined(_M_X64)
#if !defined(_MSC_VER) // No _skx stages for Windows yet.
if (1 && SkCpu::Supports(SkCpu::SKX)) {
diff --git a/src/jumper/SkJumper.h b/src/jumper/SkJumper.h
index ea08e0d1ca..46344986cf 100644
--- a/src/jumper/SkJumper.h
+++ b/src/jumper/SkJumper.h
@@ -8,6 +8,9 @@
#ifndef SkJumper_DEFINED
#define SkJumper_DEFINED
+#include <stddef.h>
+#include <stdint.h>
+
// This file contains definitions shared by SkJumper.cpp (compiled normally as part of Skia)
// and SkJumper_stages.cpp (compiled into Skia _and_ offline into SkJumper_generated.h).
// Keep it simple!
@@ -21,36 +24,18 @@
#define MAYBE_MSABI
#endif
-#if defined(JUMPER_IS_OFFLINE) && (defined(__aarch64__) || defined(__arm__))
- // To reduce SkJumper's dependency on the Android NDK,
- // we provide what we need from <string.h>, <stdint.h>, and <stddef.h> ourselves.
- #define memcpy __builtin_memcpy
-
- using int8_t = signed char;
- using uint8_t = unsigned char;
- using int16_t = signed short;
- using uint16_t = unsigned short;
- using int32_t = signed int;
- using uint32_t = unsigned int;
- #if defined(__aarch64__)
- using int64_t = signed long;
- using uint64_t = unsigned long;
- using size_t = uint64_t;
- #else
- using int64_t = signed long long;
- using uint64_t = unsigned long long;
- using size_t = uint32_t;
- #endif
-
- // Now pretend we've included <stdint.h> (or it'll be included again by <arm_neon.h>).
- #define __CLANG_STDINT_H
- #define _STDINT_H_
+// Any custom ABI to use for all non-externally-facing stage functions.
+#if defined(__ARM_NEON) && defined(__arm__)
+ // This lets us pass vectors more efficiently on 32-bit ARM.
+ #define ABI __attribute__((pcs("aapcs-vfp")))
#else
- #include <string.h>
- #include <stdint.h>
+ #define ABI
#endif
-// When compiled with Clang on ARM, we'll have 8-bit NEON stages.
+// On ARM we expect that you're using Clang if you want SkJumper to be fast.
+// If you are, the baseline float stages will use NEON, and lowp stages will
+// also be available. (If somehow you're building for ARM not using Clang,
+// you'll get scalar baseline stages and no lowp support.)
#if defined(__clang__) && defined(__ARM_NEON)
#define JUMPER_HAS_NEON_LOWP
#endif
diff --git a/src/jumper/SkJumper_generated.S b/src/jumper/SkJumper_generated.S
index 0de83a4094..01a0e63a3b 100644
--- a/src/jumper/SkJumper_generated.S
+++ b/src/jumper/SkJumper_generated.S
@@ -23,9459 +23,7 @@
#define BALIGN32 .balign 32
#endif
.text
-#if defined(__arm__)
-BALIGN4
-
-HIDDEN _sk_start_pipeline_vfp4
-.globl _sk_start_pipeline_vfp4
-FUNCTION(_sk_start_pipeline_vfp4)
-_sk_start_pipeline_vfp4:
- .long 0xe92d4ff0 // push {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- .long 0xe28db01c // add fp, sp, #28
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xed2d8b04 // vpush {d8-d9}
- .long 0xe24dd058 // sub sp, sp, #88
- .long 0xe1a0a001 // mov sl, r1
- .long 0xe1a05002 // mov r5, r2
- .long 0xe1a09000 // mov r9, r0
- .long 0xe15a0003 // cmp sl, r3
- .long 0xe58d3004 // str r3, [sp, #4]
- .long 0x2a000031 // bcs f4 <sk_start_pipeline_vfp4+0xf4>
- .long 0xe59b4008 // ldr r4, [fp, #8]
- .long 0xe28d7008 // add r7, sp, #8
- .long 0xf2808050 // vmov.i32 q4, #0
- .long 0xe2878010 // add r8, r7, #16
- .long 0xe2890004 // add r0, r9, #4
- .long 0xe4946004 // ldr r6, [r4], #4
- .long 0xe58d0000 // str r0, [sp]
- .long 0xe3a00000 // mov r0, #0
- .long 0xe3a01030 // mov r1, #48
- .long 0xe58d0010 // str r0, [sp, #16]
- .long 0xe2880020 // add r0, r8, #32
- .long 0xe58da00c // str sl, [sp, #12]
- .long 0xe58d9008 // str r9, [sp, #8]
- .long 0xf4008acf // vst1.64 {d8-d9}, [r0]
- .long 0xe2880010 // add r0, r8, #16
- .long 0xf4008acf // vst1.64 {d8-d9}, [r0]
- .long 0xe1a00008 // mov r0, r8
- .long 0xf4008ac1 // vst1.64 {d8-d9}, [r0], r1
- .long 0xf4008acf // vst1.64 {d8-d9}, [r0]
- .long 0xe59d0000 // ldr r0, [sp]
- .long 0xe1500005 // cmp r0, r5
- .long 0xe1a00009 // mov r0, r9
- .long 0x8a00000c // bhi bc <sk_start_pipeline_vfp4+0xbc>
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xe1a00007 // mov r0, r7
- .long 0xf2802050 // vmov.i32 q1, #0
- .long 0xe1a01004 // mov r1, r4
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xf2806050 // vmov.i32 q3, #0
- .long 0xe12fff36 // blx r6
- .long 0xe59d1008 // ldr r1, [sp, #8]
- .long 0xe2810004 // add r0, r1, #4
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe1510005 // cmp r1, r5
- .long 0xe58d0008 // str r0, [sp, #8]
- .long 0x9afffff2 // bls 88 <sk_start_pipeline_vfp4+0x88>
- .long 0xe0550000 // subs r0, r5, r0
- .long 0x0a000007 // beq e4 <sk_start_pipeline_vfp4+0xe4>
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xe58d0010 // str r0, [sp, #16]
- .long 0xf2802050 // vmov.i32 q1, #0
- .long 0xe1a00007 // mov r0, r7
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xe1a01004 // mov r1, r4
- .long 0xf2806050 // vmov.i32 q3, #0
- .long 0xe12fff36 // blx r6
- .long 0xe59d0004 // ldr r0, [sp, #4]
- .long 0xe28aa001 // add sl, sl, #1
- .long 0xe15a0000 // cmp sl, r0
- .long 0x1affffd4 // bne 48 <sk_start_pipeline_vfp4+0x48>
- .long 0xe24bd030 // sub sp, fp, #48
- .long 0xecbd8b04 // vpop {d8-d9}
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd8ff0 // pop {r4, r5, r6, r7, r8, r9, sl, fp, pc}
-
-HIDDEN _sk_just_return_vfp4
-.globl _sk_just_return_vfp4
-FUNCTION(_sk_just_return_vfp4)
-_sk_just_return_vfp4:
- .long 0xe12fff1e // bx lr
-
-HIDDEN _sk_seed_shader_vfp4
-.globl _sk_seed_shader_vfp4
-FUNCTION(_sk_seed_shader_vfp4)
-_sk_seed_shader_vfp4:
- .long 0xe3a02020 // mov r2, #32
- .long 0xe1a03000 // mov r3, r0
- .long 0xf4e30cb2 // vld1.32 {d16[]-d17[]}, [r3 :32], r2
- .long 0xe2802004 // add r2, r0, #4
- .long 0xf2c06050 // vmov.i32 q11, #0
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xe591c000 // ldr ip, [r1]
- .long 0xe28f203c // add r2, pc, #60
- .long 0xf4224acf // vld1.64 {d4-d5}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf46c8a8f // vld1.32 {d24-d25}, [ip]
- .long 0xf2806050 // vmov.i32 q3, #0
- .long 0xf2080de0 // vadd.f32 q0, q12, q8
- .long 0xf4426acf // vst1.64 {d22-d23}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2022de4 // vadd.f32 q1, q9, q10
- .long 0xf4426acf // vst1.64 {d22-d23}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4436acf // vst1.64 {d22-d23}, [r3]
- .long 0xf4426acf // vst1.64 {d22-d23}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe12fff12 // bx r2
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_dither_vfp4
-.globl _sk_dither_vfp4
-FUNCTION(_sk_dither_vfp4)
-_sk_dither_vfp4:
- .long 0xe1a02000 // mov r2, r0
- .long 0xf2c04051 // vmov.i32 q10, #1
- .long 0xf4e20cbd // vld1.32 {d16[]-d17[]}, [r2 :32]!
- .long 0xe28f30b4 // add r3, pc, #180
- .long 0xf2c06054 // vmov.i32 q11, #4
- .long 0xf4e2acbf // vld1.32 {d26[]-d27[]}, [r2 :32]
- .long 0xe28f20b8 // add r2, pc, #184
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe3a035f2 // mov r3, #1015021568
- .long 0xf26008e2 // vadd.i32 q8, q8, q9
- .long 0xf2c02052 // vmov.i32 q9, #2
- .long 0xf24081f4 // vand q12, q8, q10
- .long 0xf240c1f2 // vand q14, q8, q9
- .long 0xf34aa1f0 // veor q13, q13, q8
- .long 0xf24001f6 // vand q8, q8, q11
- .long 0xf2e48578 // vshl.s32 q12, q12, #4
- .long 0xf2e1c57c // vshl.s32 q14, q14, #1
- .long 0xf24a41f4 // vand q10, q13, q10
- .long 0xf3fe0070 // vshr.u32 q8, q8, #2
- .long 0xf26c81f8 // vorr q12, q14, q12
- .long 0xf24a21f2 // vand q9, q13, q9
- .long 0xf2e54574 // vshl.s32 q10, q10, #5
- .long 0xf26801f0 // vorr q8, q12, q8
- .long 0xf24a61f6 // vand q11, q13, q11
- .long 0xf26001f4 // vorr q8, q8, q10
- .long 0xf2e22572 // vshl.s32 q9, q9, #2
- .long 0xf3ff4076 // vshr.u32 q10, q11, #1
- .long 0xf26001f2 // vorr q8, q8, q9
- .long 0xeea23b90 // vdup.32 q9, r3
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xf2c06050 // vmov.i32 q11, #0
- .long 0xf26001f4 // vorr q8, q8, q10
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2404cf2 // vfma.f32 q10, q8, q9
- .long 0xf4e30cbf // vld1.32 {d16[]-d17[]}, [r3 :32]
- .long 0xf3400df4 // vmul.f32 q8, q8, q10
- .long 0xf2402dc0 // vadd.f32 q9, q8, q0
- .long 0xf2404dc2 // vadd.f32 q10, q8, q1
- .long 0xf2400dc4 // vadd.f32 q8, q8, q2
- .long 0xf2622fc6 // vmin.f32 q9, q9, q3
- .long 0xf2644fc6 // vmin.f32 q10, q10, q3
- .long 0xf2600fc6 // vmin.f32 q8, q8, q3
- .long 0xf2060fe2 // vmax.f32 q0, q11, q9
- .long 0xf2062fe4 // vmax.f32 q1, q11, q10
- .long 0xf2064fe0 // vmax.f32 q2, q11, q8
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x00000000 // .word 0x00000000
- .long 0x00000001 // .word 0x00000001
- .long 0x00000002 // .word 0x00000002
- .long 0x00000003 // .word 0x00000003
- .long 0xbefc0000 // .word 0xbefc0000
- .long 0xbefc0000 // .word 0xbefc0000
- .long 0xbefc0000 // .word 0xbefc0000
- .long 0xbefc0000 // .word 0xbefc0000
-
-HIDDEN _sk_uniform_color_vfp4
-.globl _sk_uniform_color_vfp4
-FUNCTION(_sk_uniform_color_vfp4)
-_sk_uniform_color_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0200c // mov r2, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe1a0e003 // mov lr, r3
- .long 0xf4ae0cb2 // vld1.32 {d0[]-d1[]}, [lr :32], r2
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4a24cbf // vld1.32 {d4[]-d5[]}, [r2 :32]
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf4a22cbf // vld1.32 {d2[]-d3[]}, [r2 :32]
- .long 0xf4ae6cbf // vld1.32 {d6[]-d7[]}, [lr :32]
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
-
-HIDDEN _sk_black_color_vfp4
-.globl _sk_black_color_vfp4
-FUNCTION(_sk_black_color_vfp4)
-_sk_black_color_vfp4:
- .long 0xe28f2018 // add r2, pc, #24
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xf2802050 // vmov.i32 q1, #0
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_white_color_vfp4
-.globl _sk_white_color_vfp4
-FUNCTION(_sk_white_color_vfp4)
-_sk_white_color_vfp4:
- .long 0xe28f2018 // add r2, pc, #24
- .long 0xf4220acf // vld1.64 {d0-d1}, [r2]
- .long 0xf2202150 // vorr q1, q0, q0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2204150 // vorr q2, q0, q0
- .long 0xf2206150 // vorr q3, q0, q0
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_load_rgba_vfp4
-.globl _sk_load_rgba_vfp4
-FUNCTION(_sk_load_rgba_vfp4)
-_sk_load_rgba_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xe591e000 // ldr lr, [r1]
- .long 0xe3a0c030 // mov ip, #48
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe1a0300e // mov r3, lr
- .long 0xf4230a8c // vld1.32 {d0-d1}, [r3], ip
- .long 0xf4236a8f // vld1.32 {d6-d7}, [r3]
- .long 0xe28e3020 // add r3, lr, #32
- .long 0xf4234a8f // vld1.32 {d4-d5}, [r3]
- .long 0xe28e3010 // add r3, lr, #16
- .long 0xf4232a8f // vld1.32 {d2-d3}, [r3]
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_store_rgba_vfp4
-.globl _sk_store_rgba_vfp4
-FUNCTION(_sk_store_rgba_vfp4)
-_sk_store_rgba_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe2823010 // add r3, r2, #16
- .long 0xf4032a8f // vst1.32 {d2-d3}, [r3]
- .long 0xe2823020 // add r3, r2, #32
- .long 0xf4034a8f // vst1.32 {d4-d5}, [r3]
- .long 0xe3a03030 // mov r3, #48
- .long 0xf4020a83 // vst1.32 {d0-d1}, [r2], r3
- .long 0xf4026a8f // vst1.32 {d6-d7}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
-
-HIDDEN _sk_clear_vfp4
-.globl _sk_clear_vfp4
-FUNCTION(_sk_clear_vfp4)
-_sk_clear_vfp4:
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xf2802050 // vmov.i32 q1, #0
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xf2806050 // vmov.i32 q3, #0
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_srcatop_vfp4
-.globl _sk_srcatop_vfp4
-FUNCTION(_sk_srcatop_vfp4)
-_sk_srcatop_vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf2602dc6 // vsub.f32 q9, q8, q3
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3046dd6 // vmul.f32 q3, q10, q3
- .long 0xf3042dd2 // vmul.f32 q1, q10, q1
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf3044dd4 // vmul.f32 q2, q10, q2
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3420df0 // vmul.f32 q8, q9, q8
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf2026cf4 // vfma.f32 q3, q9, q10
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2022cf6 // vfma.f32 q1, q9, q11
- .long 0xf2440cd0 // vfma.f32 q8, q10, q0
- .long 0xf2024cf8 // vfma.f32 q2, q9, q12
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_dstatop_vfp4
-.globl _sk_dstatop_vfp4
-FUNCTION(_sk_dstatop_vfp4)
-_sk_dstatop_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf2606de4 // vsub.f32 q11, q8, q10
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3400dd6 // vmul.f32 q8, q8, q3
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf3444dd6 // vmul.f32 q10, q10, q3
- .long 0xf3422dd6 // vmul.f32 q9, q9, q3
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3064dd4 // vmul.f32 q2, q11, q2
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf2460cd0 // vfma.f32 q8, q11, q0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2462cd2 // vfma.f32 q9, q11, q1
- .long 0xf2464cd6 // vfma.f32 q10, q11, q3
- .long 0xf2084cd6 // vfma.f32 q2, q12, q3
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xf22461f4 // vorr q3, q10, q10
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_srcin_vfp4
-.globl _sk_srcin_vfp4
-FUNCTION(_sk_srcin_vfp4)
-_sk_srcin_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xf3000dd0 // vmul.f32 q0, q8, q0
- .long 0xf3002dd2 // vmul.f32 q1, q8, q1
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3004dd4 // vmul.f32 q2, q8, q2
- .long 0xf3006dd6 // vmul.f32 q3, q8, q3
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_dstin_vfp4
-.globl _sk_dstin_vfp4
-FUNCTION(_sk_dstin_vfp4)
-_sk_dstin_vfp4:
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3000dd6 // vmul.f32 q0, q8, q3
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3024dd6 // vmul.f32 q2, q9, q3
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf3042dd6 // vmul.f32 q1, q10, q3
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xf3006dd6 // vmul.f32 q3, q8, q3
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_srcout_vfp4
-.globl _sk_srcout_vfp4
-FUNCTION(_sk_srcout_vfp4)
-_sk_srcout_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3000dd0 // vmul.f32 q0, q8, q0
- .long 0xf3002dd2 // vmul.f32 q1, q8, q1
- .long 0xf3004dd4 // vmul.f32 q2, q8, q2
- .long 0xf3006dd6 // vmul.f32 q3, q8, q3
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_dstout_vfp4
-.globl _sk_dstout_vfp4
-FUNCTION(_sk_dstout_vfp4)
-_sk_dstout_vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2600dc6 // vsub.f32 q8, q8, q3
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf3000df2 // vmul.f32 q0, q8, q9
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf3002df6 // vmul.f32 q1, q8, q11
- .long 0xf3004df4 // vmul.f32 q2, q8, q10
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3006df2 // vmul.f32 q3, q8, q9
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_srcover_vfp4
-.globl _sk_srcover_vfp4
-FUNCTION(_sk_srcover_vfp4)
-_sk_srcover_vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf2600dc6 // vsub.f32 q8, q8, q3
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2020cf0 // vfma.f32 q0, q9, q8
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2042cf0 // vfma.f32 q1, q10, q8
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xf2024cf0 // vfma.f32 q2, q9, q8
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2046cf0 // vfma.f32 q3, q10, q8
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_dstover_vfp4
-.globl _sk_dstover_vfp4
-FUNCTION(_sk_dstover_vfp4)
-_sk_dstover_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf2628de0 // vsub.f32 q12, q9, q8
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf2402c78 // vfma.f32 q9, q0, q12
- .long 0xf2424c78 // vfma.f32 q10, q1, q12
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2446c78 // vfma.f32 q11, q2, q12
- .long 0xf2460c78 // vfma.f32 q8, q3, q12
- .long 0xf22201f2 // vorr q0, q9, q9
- .long 0xf22421f4 // vorr q1, q10, q10
- .long 0xf22641f6 // vorr q2, q11, q11
- .long 0xf22061f0 // vorr q3, q8, q8
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_modulate_vfp4
-.globl _sk_modulate_vfp4
-FUNCTION(_sk_modulate_vfp4)
-_sk_modulate_vfp4:
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3000dd0 // vmul.f32 q0, q8, q0
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3024dd4 // vmul.f32 q2, q9, q2
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf3042dd2 // vmul.f32 q1, q10, q1
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xf3006dd6 // vmul.f32 q3, q8, q3
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_multiply_vfp4
-.globl _sk_multiply_vfp4
-FUNCTION(_sk_multiply_vfp4)
-_sk_multiply_vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2606dc6 // vsub.f32 q11, q8, q3
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf260ade8 // vsub.f32 q13, q8, q12
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3464dfe // vmul.f32 q10, q11, q15
- .long 0xf3460df8 // vmul.f32 q8, q11, q12
- .long 0xf34a2dd4 // vmul.f32 q9, q13, q2
- .long 0xf24a4cd0 // vfma.f32 q10, q13, q0
- .long 0xf2462cfc // vfma.f32 q9, q11, q14
- .long 0xf24a0cd6 // vfma.f32 q8, q13, q3
- .long 0xf24e4cd0 // vfma.f32 q10, q15, q0
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xf3466dfe // vmul.f32 q11, q11, q15
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf24c2cd4 // vfma.f32 q9, q14, q2
- .long 0xf2480cd6 // vfma.f32 q8, q12, q3
- .long 0xf24a6cd2 // vfma.f32 q11, q13, q1
- .long 0xf22401f4 // vorr q0, q10, q10
- .long 0xf22241f2 // vorr q2, q9, q9
- .long 0xf22061f0 // vorr q3, q8, q8
- .long 0xf24e6cd2 // vfma.f32 q11, q15, q1
- .long 0xf22621f6 // vorr q1, q11, q11
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_plus__vfp4
-.globl _sk_plus__vfp4
-FUNCTION(_sk_plus__vfp4)
-_sk_plus__vfp4:
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf2c76f50 // vmov.f32 q11, #1
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf2400dc2 // vadd.f32 q8, q8, q1
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2422dc0 // vadd.f32 q9, q9, q0
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2444dc4 // vadd.f32 q10, q10, q2
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf2488dc6 // vadd.f32 q12, q12, q3
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2220fe6 // vmin.f32 q0, q9, q11
- .long 0xf2202fe6 // vmin.f32 q1, q8, q11
- .long 0xf2244fe6 // vmin.f32 q2, q10, q11
- .long 0xf2286fe6 // vmin.f32 q3, q12, q11
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_screen_vfp4
-.globl _sk_screen_vfp4
-FUNCTION(_sk_screen_vfp4)
-_sk_screen_vfp4:
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf2460dc0 // vadd.f32 q8, q11, q0
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2482dc2 // vadd.f32 q9, q12, q1
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf24a4dc4 // vadd.f32 q10, q13, q2
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf2660cd0 // vfms.f32 q8, q11, q0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf24c6dc6 // vadd.f32 q11, q14, q3
- .long 0xf2682cd2 // vfms.f32 q9, q12, q1
- .long 0xf26a4cd4 // vfms.f32 q10, q13, q2
- .long 0xf26c6cd6 // vfms.f32 q11, q14, q3
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xf22441f4 // vorr q2, q10, q10
- .long 0xf22661f6 // vorr q3, q11, q11
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_xor__vfp4
-.globl _sk_xor__vfp4
-FUNCTION(_sk_xor__vfp4)
-_sk_xor__vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2606dc6 // vsub.f32 q11, q8, q3
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf2608de4 // vsub.f32 q12, q8, q10
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3460df2 // vmul.f32 q8, q11, q9
- .long 0xf3462dfa // vmul.f32 q9, q11, q13
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf3464df4 // vmul.f32 q10, q11, q10
- .long 0xf3084dd4 // vmul.f32 q2, q12, q2
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2480cd0 // vfma.f32 q8, q12, q0
- .long 0xf2482cd2 // vfma.f32 q9, q12, q1
- .long 0xf2484cd6 // vfma.f32 q10, q12, q3
- .long 0xf2064cfa // vfma.f32 q2, q11, q13
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xf22461f4 // vorr q3, q10, q10
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_darken_vfp4
-.globl _sk_darken_vfp4
-FUNCTION(_sk_darken_vfp4)
-_sk_darken_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf340add0 // vmul.f32 q13, q8, q0
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3446dd6 // vmul.f32 q11, q10, q3
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf340edd2 // vmul.f32 q15, q8, q1
- .long 0xf348cdd6 // vmul.f32 q14, q12, q3
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2444dc0 // vadd.f32 q10, q10, q0
- .long 0xf24a6fe6 // vmax.f32 q11, q13, q11
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf24ecfec // vmax.f32 q14, q15, q14
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf24aedc4 // vadd.f32 q15, q13, q2
- .long 0xf34aadd6 // vmul.f32 q13, q13, q3
- .long 0xf3000dd4 // vmul.f32 q0, q8, q2
- .long 0xf2622dc6 // vsub.f32 q9, q9, q3
- .long 0xf2488dc2 // vadd.f32 q12, q12, q1
- .long 0xf240af6a // vmax.f32 q13, q0, q13
- .long 0xf2006cf2 // vfma.f32 q3, q8, q9
- .long 0xf2240de6 // vsub.f32 q0, q10, q11
- .long 0xf2282dec // vsub.f32 q1, q12, q14
- .long 0xf22e4dea // vsub.f32 q2, q15, q13
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_lighten_vfp4
-.globl _sk_lighten_vfp4
-FUNCTION(_sk_lighten_vfp4)
-_sk_lighten_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf340add0 // vmul.f32 q13, q8, q0
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3446dd6 // vmul.f32 q11, q10, q3
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf340edd2 // vmul.f32 q15, q8, q1
- .long 0xf348cdd6 // vmul.f32 q14, q12, q3
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2444dc0 // vadd.f32 q10, q10, q0
- .long 0xf26a6fe6 // vmin.f32 q11, q13, q11
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf26ecfec // vmin.f32 q14, q15, q14
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf24aedc4 // vadd.f32 q15, q13, q2
- .long 0xf34aadd6 // vmul.f32 q13, q13, q3
- .long 0xf3000dd4 // vmul.f32 q0, q8, q2
- .long 0xf2622dc6 // vsub.f32 q9, q9, q3
- .long 0xf2488dc2 // vadd.f32 q12, q12, q1
- .long 0xf260af6a // vmin.f32 q13, q0, q13
- .long 0xf2006cf2 // vfma.f32 q3, q8, q9
- .long 0xf2240de6 // vsub.f32 q0, q10, q11
- .long 0xf2282dec // vsub.f32 q1, q12, q14
- .long 0xf22e4dea // vsub.f32 q2, q15, q13
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_difference_vfp4
-.globl _sk_difference_vfp4
-FUNCTION(_sk_difference_vfp4)
-_sk_difference_vfp4:
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf3404dd6 // vmul.f32 q10, q8, q3
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3426dd0 // vmul.f32 q11, q9, q0
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf342cdd4 // vmul.f32 q14, q9, q2
- .long 0xf348add6 // vmul.f32 q13, q12, q3
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf342edd2 // vmul.f32 q15, q9, q1
- .long 0xf2400dc0 // vadd.f32 q8, q8, q0
- .long 0xf2664fe4 // vmin.f32 q10, q11, q10
- .long 0xf26c6fea // vmin.f32 q11, q14, q13
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf34acdd6 // vmul.f32 q14, q13, q3
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2444de4 // vadd.f32 q10, q10, q10
- .long 0xf24aadc2 // vadd.f32 q13, q13, q1
- .long 0xf26ecfec // vmin.f32 q14, q15, q14
- .long 0xf2c7ef50 // vmov.f32 q15, #1
- .long 0xf2488dc4 // vadd.f32 q12, q12, q2
- .long 0xf26eedc6 // vsub.f32 q15, q15, q3
- .long 0xf24ccdec // vadd.f32 q14, q14, q14
- .long 0xf2466de6 // vadd.f32 q11, q11, q11
- .long 0xf2026cfe // vfma.f32 q3, q9, q15
- .long 0xf2200de4 // vsub.f32 q0, q8, q10
- .long 0xf22a2dec // vsub.f32 q1, q13, q14
- .long 0xf2284de6 // vsub.f32 q2, q12, q11
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_exclusion_vfp4
-.globl _sk_exclusion_vfp4
-FUNCTION(_sk_exclusion_vfp4)
-_sk_exclusion_vfp4:
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3424dd0 // vmul.f32 q10, q9, q0
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3468dd2 // vmul.f32 q12, q11, q1
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf2600dc6 // vsub.f32 q8, q8, q3
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf34acdd4 // vmul.f32 q14, q13, q2
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xf2422dc0 // vadd.f32 q9, q9, q0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2444de4 // vadd.f32 q10, q10, q10
- .long 0xf2466dc2 // vadd.f32 q11, q11, q1
- .long 0xf2488de8 // vadd.f32 q12, q12, q12
- .long 0xf24aadc4 // vadd.f32 q13, q13, q2
- .long 0xf24ccdec // vadd.f32 q14, q14, q14
- .long 0xf20e6cf0 // vfma.f32 q3, q15, q8
- .long 0xf2220de4 // vsub.f32 q0, q9, q10
- .long 0xf2262de8 // vsub.f32 q1, q11, q12
- .long 0xf22a4dec // vsub.f32 q2, q13, q14
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_colorburn_vfp4
-.globl _sk_colorburn_vfp4
-FUNCTION(_sk_colorburn_vfp4)
-_sk_colorburn_vfp4:
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xf3fb4544 // vrecpe.f32 q10, q2
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf3b9a542 // vceq.f32 q5, q1, #0
- .long 0xf3b9e540 // vceq.f32 q7, q0, #0
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf2608de2 // vsub.f32 q12, q8, q9
- .long 0xf2446f74 // vrecps.f32 q11, q2, q10
- .long 0xf3444df6 // vmul.f32 q10, q10, q11
- .long 0xf3486dd6 // vmul.f32 q11, q12, q3
- .long 0xf2c78f50 // vmov.f32 q12, #1
- .long 0xf268ade0 // vsub.f32 q13, q12, q8
- .long 0xf3464df4 // vmul.f32 q10, q11, q10
- .long 0xf2688dc6 // vsub.f32 q12, q12, q3
- .long 0xf34a6dd4 // vmul.f32 q11, q13, q2
- .long 0xf30a8dd2 // vmul.f32 q4, q13, q1
- .long 0xf2604fe4 // vmin.f32 q10, q8, q10
- .long 0xf348edf2 // vmul.f32 q15, q12, q9
- .long 0xf266c1f6 // vorr q14, q11, q11
- .long 0xf34aadd0 // vmul.f32 q13, q13, q0
- .long 0xf2604de4 // vsub.f32 q10, q8, q10
- .long 0xf244ccd6 // vfma.f32 q14, q10, q3
- .long 0xf3f94544 // vceq.f32 q10, q2, #0
- .long 0xf3bb4542 // vrecpe.f32 q2, q1
- .long 0xf24ecdec // vadd.f32 q14, q15, q14
- .long 0xf35e41fc // vbsl q10, q15, q14
- .long 0xf242cf54 // vrecps.f32 q14, q1, q2
- .long 0xf344ed7c // vmul.f32 q15, q2, q14
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf2204dec // vsub.f32 q2, q8, q14
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf422cacf // vld1.64 {d12-d13}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3044d56 // vmul.f32 q2, q2, q3
- .long 0xf344ed7e // vmul.f32 q15, q2, q15
- .long 0xf2284158 // vorr q2, q4, q4
- .long 0xf260efee // vmin.f32 q15, q8, q15
- .long 0xf260edee // vsub.f32 q15, q8, q15
- .long 0xf20e4cd6 // vfma.f32 q2, q15, q3
- .long 0xf348edfc // vmul.f32 q15, q12, q14
- .long 0xf20e4dc4 // vadd.f32 q2, q15, q2
- .long 0xf31ea1d4 // vbsl q5, q15, q2
- .long 0xf3fbe540 // vrecpe.f32 q15, q0
- .long 0xf2024ee0 // vceq.f32 q2, q9, q8
- .long 0xf2462de2 // vadd.f32 q9, q11, q9
- .long 0xf2002f7e // vrecps.f32 q1, q0, q15
- .long 0xf2486d6c // vadd.f32 q11, q4, q14
- .long 0xf20c0e60 // vceq.f32 q0, q6, q8
- .long 0xf31241f4 // vbsl q2, q9, q10
- .long 0xf34eedd2 // vmul.f32 q15, q15, q1
- .long 0xf2202dcc // vsub.f32 q1, q8, q6
- .long 0xf3022d56 // vmul.f32 q1, q1, q3
- .long 0xf342ed7e // vmul.f32 q15, q1, q15
- .long 0xf22a21fa // vorr q1, q13, q13
- .long 0xf260efee // vmin.f32 q15, q8, q15
- .long 0xf260edee // vsub.f32 q15, q8, q15
- .long 0xf20e2cd6 // vfma.f32 q1, q15, q3
- .long 0xf348eddc // vmul.f32 q15, q12, q6
- .long 0xf2006cf8 // vfma.f32 q3, q8, q12
- .long 0xf20e2dc2 // vadd.f32 q1, q15, q1
- .long 0xf31ee1d2 // vbsl q7, q15, q1
- .long 0xf20c2ee0 // vceq.f32 q1, q14, q8
- .long 0xf24c0d6a // vadd.f32 q8, q6, q13
- .long 0xf31621da // vbsl q1, q11, q5
- .long 0xf31001de // vbsl q0, q8, q7
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_colordodge_vfp4
-.globl _sk_colordodge_vfp4
-FUNCTION(_sk_colordodge_vfp4)
-_sk_colordodge_vfp4:
- .long 0xed2d8b0c // vpush {d8-d13}
- .long 0xf2660d44 // vsub.f32 q8, q3, q2
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2c78f50 // vmov.f32 q12, #1
- .long 0xf202ae46 // vceq.f32 q5, q1, q3
- .long 0xf3fb2560 // vrecpe.f32 q9, q8
- .long 0xf200ce46 // vceq.f32 q6, q0, q3
- .long 0xf2404ff2 // vrecps.f32 q10, q8, q9
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf268ade6 // vsub.f32 q13, q12, q11
- .long 0xf2688dc6 // vsub.f32 q12, q12, q3
- .long 0xf3422df4 // vmul.f32 q9, q9, q10
- .long 0xf3404dd6 // vmul.f32 q10, q8, q3
- .long 0xf348edf0 // vmul.f32 q15, q12, q8
- .long 0xf3442df2 // vmul.f32 q9, q10, q9
- .long 0xf2664fe2 // vmin.f32 q10, q11, q9
- .long 0xf34a2dd4 // vmul.f32 q9, q13, q2
- .long 0xf262c1f2 // vorr q14, q9, q9
- .long 0xf244ccd6 // vfma.f32 q14, q10, q3
- .long 0xf2444e46 // vceq.f32 q10, q2, q3
- .long 0xf20e4dc4 // vadd.f32 q2, q15, q2
- .long 0xf24ecdec // vadd.f32 q14, q15, q14
- .long 0xf266ed42 // vsub.f32 q15, q3, q1
- .long 0xf354417c // vbsl q10, q2, q14
- .long 0xf3fbc56e // vrecpe.f32 q14, q15
- .long 0xf24eeffc // vrecps.f32 q15, q15, q14
- .long 0xf34cedfe // vmul.f32 q15, q14, q15
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf30c4dd6 // vmul.f32 q2, q14, q3
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf344ed7e // vmul.f32 q15, q2, q15
- .long 0xf2264fee // vmin.f32 q2, q11, q15
- .long 0xf34aedd2 // vmul.f32 q15, q13, q1
- .long 0xf34aadd0 // vmul.f32 q13, q13, q0
- .long 0xf22e81fe // vorr q4, q15, q15
- .long 0xf2048c56 // vfma.f32 q4, q2, q3
- .long 0xf3084dfc // vmul.f32 q2, q12, q14
- .long 0xf2042d42 // vadd.f32 q1, q2, q1
- .long 0xf2048d48 // vadd.f32 q4, q2, q4
- .long 0xf312a158 // vbsl q5, q1, q4
- .long 0xf2262d40 // vsub.f32 q1, q3, q0
- .long 0xf3bb4542 // vrecpe.f32 q2, q1
- .long 0xf2022f54 // vrecps.f32 q1, q1, q2
- .long 0xf3042d52 // vmul.f32 q1, q2, q1
- .long 0xf4224acf // vld1.64 {d4-d5}, [r2]
- .long 0xf3048d56 // vmul.f32 q4, q2, q3
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3082d52 // vmul.f32 q1, q4, q1
- .long 0xf22a81fa // vorr q4, q13, q13
- .long 0xf2262fc2 // vmin.f32 q1, q11, q1
- .long 0xf2028c56 // vfma.f32 q4, q1, q3
- .long 0xf3082dd4 // vmul.f32 q1, q12, q2
- .long 0xf2066cf8 // vfma.f32 q3, q11, q12
- .long 0xf2020d40 // vadd.f32 q0, q1, q0
- .long 0xf2028d48 // vadd.f32 q4, q1, q4
- .long 0xf3b9256c // vceq.f32 q1, q14, #0
- .long 0xf31e21da // vbsl q1, q15, q5
- .long 0xf310c158 // vbsl q6, q0, q4
- .long 0xf3b90544 // vceq.f32 q0, q2, #0
- .long 0xf3b94560 // vceq.f32 q2, q8, #0
- .long 0xf31a01dc // vbsl q0, q13, q6
- .long 0xf31241f4 // vbsl q2, q9, q10
- .long 0xecbd8b0c // vpop {d8-d13}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_hardlight_vfp4
-.globl _sk_hardlight_vfp4
-FUNCTION(_sk_hardlight_vfp4)
-_sk_hardlight_vfp4:
- .long 0xed2d8b08 // vpush {d8-d11}
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2268d42 // vsub.f32 q4, q3, q1
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf260cde2 // vsub.f32 q14, q8, q9
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf262adee // vsub.f32 q13, q9, q15
- .long 0xf2606dc6 // vsub.f32 q11, q8, q3
- .long 0xf34c4dd2 // vmul.f32 q10, q14, q1
- .long 0xf34c0dd4 // vmul.f32 q8, q14, q2
- .long 0xf348ad7a // vmul.f32 q13, q4, q13
- .long 0xf3028dd6 // vmul.f32 q4, q9, q3
- .long 0xf2464cfe // vfma.f32 q10, q11, q15
- .long 0xf34eedd2 // vmul.f32 q15, q15, q1
- .long 0xf24aadea // vadd.f32 q13, q13, q13
- .long 0xf2460cf8 // vfma.f32 q8, q11, q12
- .long 0xf24eedee // vadd.f32 q15, q15, q15
- .long 0xf228ad6a // vsub.f32 q5, q4, q13
- .long 0xf242ad42 // vadd.f32 q13, q1, q1
- .long 0xf346ae6a // vcge.f32 q13, q3, q13
- .long 0xf35ea1da // vbsl q13, q15, q5
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xf3062dfe // vmul.f32 q1, q11, q15
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf226ad40 // vsub.f32 q5, q3, q0
- .long 0xf20c2cd0 // vfma.f32 q1, q14, q0
- .long 0xf262cdee // vsub.f32 q14, q9, q15
- .long 0xf34eedd0 // vmul.f32 q15, q15, q0
- .long 0xf34acd7c // vmul.f32 q14, q5, q14
- .long 0xf200ad40 // vadd.f32 q5, q0, q0
- .long 0xf24eedee // vadd.f32 q15, q15, q15
- .long 0xf24ccdec // vadd.f32 q14, q14, q14
- .long 0xf306ae4a // vcge.f32 q5, q3, q5
- .long 0xf268cd6c // vsub.f32 q14, q4, q14
- .long 0xf31ea1fc // vbsl q5, q15, q14
- .long 0xf262cde8 // vsub.f32 q14, q9, q12
- .long 0xf266ed44 // vsub.f32 q15, q3, q2
- .long 0xf3488dd4 // vmul.f32 q12, q12, q2
- .long 0xf2020d4a // vadd.f32 q0, q1, q5
- .long 0xf34ecdfc // vmul.f32 q14, q15, q14
- .long 0xf244ed44 // vadd.f32 q15, q2, q2
- .long 0xf2488de8 // vadd.f32 q12, q12, q12
- .long 0xf24ccdec // vadd.f32 q14, q14, q14
- .long 0xf346ee6e // vcge.f32 q15, q3, q15
- .long 0xf2026cf6 // vfma.f32 q3, q9, q11
- .long 0xf268cd6c // vsub.f32 q14, q4, q14
- .long 0xf358e1fc // vbsl q15, q12, q14
- .long 0xf2042dea // vadd.f32 q1, q10, q13
- .long 0xf2004dee // vadd.f32 q2, q8, q15
- .long 0xecbd8b08 // vpop {d8-d11}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_overlay_vfp4
-.globl _sk_overlay_vfp4
-FUNCTION(_sk_overlay_vfp4)
-_sk_overlay_vfp4:
- .long 0xed2d8b08 // vpush {d8-d11}
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2268d42 // vsub.f32 q4, q3, q1
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf260cde2 // vsub.f32 q14, q8, q9
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf262adee // vsub.f32 q13, q9, q15
- .long 0xf2606dc6 // vsub.f32 q11, q8, q3
- .long 0xf34c4dd2 // vmul.f32 q10, q14, q1
- .long 0xf34c0dd4 // vmul.f32 q8, q14, q2
- .long 0xf348ad7a // vmul.f32 q13, q4, q13
- .long 0xf3028dd6 // vmul.f32 q4, q9, q3
- .long 0xf2464cfe // vfma.f32 q10, q11, q15
- .long 0xf2460cf8 // vfma.f32 q8, q11, q12
- .long 0xf24aadea // vadd.f32 q13, q13, q13
- .long 0xf228ad6a // vsub.f32 q5, q4, q13
- .long 0xf24eadee // vadd.f32 q13, q15, q15
- .long 0xf34eedd2 // vmul.f32 q15, q15, q1
- .long 0xf342aeea // vcge.f32 q13, q9, q13
- .long 0xf24eedee // vadd.f32 q15, q15, q15
- .long 0xf35ea1da // vbsl q13, q15, q5
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xf3062dfe // vmul.f32 q1, q11, q15
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf226ad40 // vsub.f32 q5, q3, q0
- .long 0xf20c2cd0 // vfma.f32 q1, q14, q0
- .long 0xf262cdee // vsub.f32 q14, q9, q15
- .long 0xf34acd7c // vmul.f32 q14, q5, q14
- .long 0xf20eadee // vadd.f32 q5, q15, q15
- .long 0xf34eedd0 // vmul.f32 q15, q15, q0
- .long 0xf24ccdec // vadd.f32 q14, q14, q14
- .long 0xf302aeca // vcge.f32 q5, q9, q5
- .long 0xf24eedee // vadd.f32 q15, q15, q15
- .long 0xf268cd6c // vsub.f32 q14, q4, q14
- .long 0xf31ea1fc // vbsl q5, q15, q14
- .long 0xf262cde8 // vsub.f32 q14, q9, q12
- .long 0xf266ed44 // vsub.f32 q15, q3, q2
- .long 0xf2020d4a // vadd.f32 q0, q1, q5
- .long 0xf2026cf6 // vfma.f32 q3, q9, q11
- .long 0xf34ecdfc // vmul.f32 q14, q15, q14
- .long 0xf248ede8 // vadd.f32 q15, q12, q12
- .long 0xf3488dd4 // vmul.f32 q12, q12, q2
- .long 0xf2042dea // vadd.f32 q1, q10, q13
- .long 0xf24ccdec // vadd.f32 q14, q14, q14
- .long 0xf342eeee // vcge.f32 q15, q9, q15
- .long 0xf2488de8 // vadd.f32 q12, q12, q12
- .long 0xf268cd6c // vsub.f32 q14, q4, q14
- .long 0xf358e1fc // vbsl q15, q12, q14
- .long 0xf2004dee // vadd.f32 q2, q8, q15
- .long 0xecbd8b08 // vpop {d8-d11}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_softlight_vfp4
-.globl _sk_softlight_vfp4
-FUNCTION(_sk_softlight_vfp4)
-_sk_softlight_vfp4:
- .long 0xe92d0030 // push {r4, r5}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd028 // sub sp, sp, #40
- .long 0xf2620152 // vorr q8, q1, q1
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xf2c06050 // vmov.i32 q11, #0
- .long 0xec824b04 // vstmia r2, {d4-d5}
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf3c78f50 // vmov.f32 q12, #-1
- .long 0xeccd0b04 // vstmia sp, {d16-d17}
- .long 0xf2812f5c // vmov.f32 q1, #7
- .long 0xf2c7af50 // vmov.f32 q13, #1
- .long 0xf4228acf // vld1.64 {d8-d9}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3874f50 // vmov.f32 q2, #-1
- .long 0xf422aacf // vld1.64 {d10-d11}, [r2]
- .long 0xf3f94448 // vcgt.f32 q10, q4, #0
- .long 0xf26421f4 // vorr q9, q10, q10
- .long 0xe2802010 // add r2, r0, #16
- .long 0xeecbdaa9 // vdiv.f32 s27, s23, s19
- .long 0xee8bda09 // vdiv.f32 s26, s22, s18
- .long 0xeecacaa8 // vdiv.f32 s25, s21, s17
- .long 0xee8aca08 // vdiv.f32 s24, s20, s16
- .long 0xf35c2176 // vbsl q9, q6, q11
- .long 0xf30aed56 // vmul.f32 q7, q5, q3
- .long 0xf2426de2 // vadd.f32 q11, q9, q9
- .long 0xf242cde8 // vadd.f32 q14, q9, q12
- .long 0xf342edd2 // vmul.f32 q15, q9, q1
- .long 0xf2466de6 // vadd.f32 q11, q11, q11
- .long 0xf2466cf6 // vfma.f32 q11, q11, q11
- .long 0xf24cecf6 // vfma.f32 q15, q14, q11
- .long 0xf3fb65e2 // vrsqrte.f32 q11, q9
- .long 0xf346cdf6 // vmul.f32 q14, q11, q11
- .long 0xf262cffc // vrsqrts.f32 q14, q9, q14
- .long 0xf3466dfc // vmul.f32 q11, q11, q14
- .long 0xf3fbc566 // vrecpe.f32 q14, q11
- .long 0xf2466ffc // vrecps.f32 q11, q11, q14
- .long 0xf34c6df6 // vmul.f32 q11, q14, q11
- .long 0xf24acd4a // vadd.f32 q14, q5, q5
- .long 0xf2666de2 // vsub.f32 q11, q11, q9
- .long 0xf24ccdec // vadd.f32 q14, q14, q14
- .long 0xf26a2de2 // vsub.f32 q9, q13, q9
- .long 0xf348ce6c // vcge.f32 q14, q4, q14
- .long 0xf35ec1f6 // vbsl q14, q15, q11
- .long 0xf240ede0 // vadd.f32 q15, q8, q8
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf22ecdc6 // vsub.f32 q6, q15, q3
- .long 0xf3468e6e // vcge.f32 q12, q3, q15
- .long 0xf34c6d58 // vmul.f32 q11, q6, q4
- .long 0xf206ecfc // vfma.f32 q7, q11, q14
- .long 0xf266c156 // vorr q14, q3, q3
- .long 0xf24ccc72 // vfma.f32 q14, q6, q9
- .long 0xf422cacf // vld1.64 {d12-d13}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2402d40 // vadd.f32 q9, q0, q0
- .long 0xf34acd7c // vmul.f32 q14, q5, q14
- .long 0xf35c81de // vbsl q12, q14, q7
- .long 0xeecdfaa9 // vdiv.f32 s31, s27, s19
- .long 0xee8dfa09 // vdiv.f32 s30, s26, s18
- .long 0xeecceaa8 // vdiv.f32 s29, s25, s17
- .long 0xee8cea08 // vdiv.f32 s28, s24, s16
- .long 0xf264c1f4 // vorr q14, q10, q10
- .long 0xf35ec170 // vbsl q14, q7, q8
- .long 0xf24cedec // vadd.f32 q15, q14, q14
- .long 0xf20cedc4 // vadd.f32 q7, q14, q2
- .long 0xf34c0dd2 // vmul.f32 q8, q14, q1
- .long 0xf24eedee // vadd.f32 q15, q15, q15
- .long 0xf2204150 // vorr q2, q0, q0
- .long 0xf24eecfe // vfma.f32 q15, q15, q15
- .long 0xf24e0c7e // vfma.f32 q8, q7, q15
- .long 0xf3fbe5ec // vrsqrte.f32 q15, q14
- .long 0xf30eedfe // vmul.f32 q7, q15, q15
- .long 0xf22cefde // vrsqrts.f32 q7, q14, q7
- .long 0xf34eedde // vmul.f32 q15, q15, q7
- .long 0xf3bbe56e // vrecpe.f32 q7, q15
- .long 0xf24eefde // vrecps.f32 q15, q15, q7
- .long 0xf34eed7e // vmul.f32 q15, q7, q15
- .long 0xf20ced4c // vadd.f32 q7, q6, q6
- .long 0xf26eedec // vsub.f32 q15, q15, q14
- .long 0xf20eed4e // vadd.f32 q7, q7, q7
- .long 0xf308ee4e // vcge.f32 q7, q4, q7
- .long 0xf310e1fe // vbsl q7, q8, q15
- .long 0xf262edc6 // vsub.f32 q15, q9, q3
- .long 0xf34c0d56 // vmul.f32 q8, q6, q3
- .long 0xf34e6dd8 // vmul.f32 q11, q15, q4
- .long 0xf2460cde // vfma.f32 q8, q11, q7
- .long 0xf422eacf // vld1.64 {d14-d15}, [r2]
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xeecf1aa9 // vdiv.f32 s3, s31, s19
- .long 0xee8f1a09 // vdiv.f32 s2, s30, s18
- .long 0xeece0aa8 // vdiv.f32 s1, s29, s17
- .long 0xf26a6dec // vsub.f32 q11, q13, q14
- .long 0xee8e0a08 // vdiv.f32 s0, s28, s16
- .long 0xf266c156 // vorr q14, q3, q3
- .long 0xf24eccf6 // vfma.f32 q14, q15, q11
- .long 0xf34c6d7c // vmul.f32 q11, q6, q14
- .long 0xf346ce62 // vcge.f32 q14, q3, q9
- .long 0xf356c1f0 // vbsl q14, q11, q8
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3504170 // vbsl q10, q0, q8
- .long 0xf3c70f50 // vmov.f32 q8, #-1
- .long 0xf2446de4 // vadd.f32 q11, q10, q10
- .long 0xf2440de0 // vadd.f32 q8, q10, q8
- .long 0xf3442dd2 // vmul.f32 q9, q10, q1
- .long 0xec922b04 // vldmia r2, {d2-d3}
- .long 0xf2466de6 // vadd.f32 q11, q11, q11
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf30e0d56 // vmul.f32 q0, q7, q3
- .long 0xf2466cf6 // vfma.f32 q11, q11, q11
- .long 0xf2402cf6 // vfma.f32 q9, q8, q11
- .long 0xf3fb05e4 // vrsqrte.f32 q8, q10
- .long 0xf3406df0 // vmul.f32 q11, q8, q8
- .long 0xf2646ff6 // vrsqrts.f32 q11, q10, q11
- .long 0xf3400df6 // vmul.f32 q8, q8, q11
- .long 0xf3fb6560 // vrecpe.f32 q11, q8
- .long 0xf2400ff6 // vrecps.f32 q8, q8, q11
- .long 0xf3460df0 // vmul.f32 q8, q11, q8
- .long 0xf24e6d4e // vadd.f32 q11, q7, q7
- .long 0xf2600de4 // vsub.f32 q8, q8, q10
- .long 0xf2466de6 // vadd.f32 q11, q11, q11
- .long 0xf26a4de4 // vsub.f32 q10, q13, q10
- .long 0xf3486e66 // vcge.f32 q11, q4, q11
- .long 0xf35261f0 // vbsl q11, q9, q8
- .long 0xf2420d42 // vadd.f32 q8, q1, q1
- .long 0xf2602dc6 // vsub.f32 q9, q8, q3
- .long 0xf3460e60 // vcge.f32 q8, q3, q8
- .long 0xf342edd8 // vmul.f32 q15, q9, q4
- .long 0xf20e0cf6 // vfma.f32 q0, q15, q11
- .long 0xecddeb04 // vldmia sp, {d30-d31}
- .long 0xf2666156 // vorr q11, q3, q3
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf26a4dc6 // vsub.f32 q10, q13, q3
- .long 0xf2086c74 // vfma.f32 q3, q4, q10
- .long 0xf34e2d76 // vmul.f32 q9, q7, q11
- .long 0xf26a6dc8 // vsub.f32 q11, q13, q4
- .long 0xf35201d0 // vbsl q8, q9, q0
- .long 0xf346add2 // vmul.f32 q13, q11, q1
- .long 0xf346edfe // vmul.f32 q15, q11, q15
- .long 0xf3042ddc // vmul.f32 q1, q10, q6
- .long 0xf244acde // vfma.f32 q13, q10, q7
- .long 0xf2062cd4 // vfma.f32 q1, q11, q2
- .long 0xf244ecda // vfma.f32 q15, q10, q5
- .long 0xf20a4de0 // vadd.f32 q2, q13, q8
- .long 0xf2020d6c // vadd.f32 q0, q1, q14
- .long 0xf20e2de8 // vadd.f32 q1, q15, q12
- .long 0xe28dd028 // add sp, sp, #40
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd0030 // pop {r4, r5}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_hue_vfp4
-.globl _sk_hue_vfp4
-FUNCTION(_sk_hue_vfp4)
-_sk_hue_vfp4:
- .long 0xe92d0030 // push {r4, r5}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd058 // sub sp, sp, #88
- .long 0xf3440d56 // vmul.f32 q8, q2, q3
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xf3424d56 // vmul.f32 q10, q1, q3
- .long 0xf340ed56 // vmul.f32 q15, q0, q3
- .long 0xec824b04 // vstmia r2, {d4-d5}
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xec822b04 // vstmia r2, {d2-d3}
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xf2642fe0 // vmin.f32 q9, q10, q8
- .long 0xec820b04 // vstmia r2, {d0-d1}
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf2446fe0 // vmax.f32 q11, q10, q8
- .long 0xf26e2fe2 // vmin.f32 q9, q15, q9
- .long 0xf24e6fe6 // vmax.f32 q11, q15, q11
- .long 0xf2648de2 // vsub.f32 q12, q10, q9
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf2260de2 // vsub.f32 q0, q11, q9
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf266afe4 // vmin.f32 q13, q11, q10
- .long 0xf4222acf // vld1.64 {d2-d3}, [r2]
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xf246cfe4 // vmax.f32 q14, q11, q10
- .long 0xecc24b04 // vstmia r2, {d20-d21}
- .long 0xf26eede2 // vsub.f32 q15, q15, q9
- .long 0xec8d2b04 // vstmia sp, {d2-d3}
- .long 0xe28f2d09 // add r2, pc, #576
- .long 0xf262af6a // vmin.f32 q13, q1, q13
- .long 0xf242cf6c // vmax.f32 q14, q1, q14
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf26cadea // vsub.f32 q13, q14, q13
- .long 0xf3f9c540 // vceq.f32 q14, q0, #0
- .long 0xf34aadd6 // vmul.f32 q13, q13, q3
- .long 0xf30a4df8 // vmul.f32 q2, q13, q12
- .long 0xf26c81fc // vorr q12, q14, q14
- .long 0xf30aedf0 // vmul.f32 q7, q13, q8
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xeec59aa1 // vdiv.f32 s19, s11, s3
- .long 0xee859a01 // vdiv.f32 s18, s10, s2
- .long 0xeec48aa0 // vdiv.f32 s17, s9, s1
- .long 0xee848a00 // vdiv.f32 s16, s8, s0
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xf3548158 // vbsl q12, q2, q4
- .long 0xf30a8dfe // vmul.f32 q4, q13, q15
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xf26ce1fc // vorr q15, q14, q14
- .long 0xeec9baa1 // vdiv.f32 s23, s19, s3
- .long 0xee89ba01 // vdiv.f32 s22, s18, s2
- .long 0xeec8aaa0 // vdiv.f32 s21, s17, s1
- .long 0xee88aa00 // vdiv.f32 s20, s16, s0
- .long 0xf354e15a // vbsl q15, q2, q5
- .long 0xf4228acf // vld1.64 {d8-d9}, [r2]
- .long 0xe28f2f7a // add r2, pc, #488
- .long 0xeecf5aa1 // vdiv.f32 s11, s31, s3
- .long 0xee8f5a01 // vdiv.f32 s10, s30, s2
- .long 0xeece4aa0 // vdiv.f32 s9, s29, s1
- .long 0xee8e4a00 // vdiv.f32 s8, s28, s0
- .long 0xf350c1d4 // vbsl q14, q8, q2
- .long 0xf422aacf // vld1.64 {d10-d11}, [r2]
- .long 0xe28f2f77 // add r2, pc, #476
- .long 0xf3420d58 // vmul.f32 q8, q1, q4
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf30ecdd8 // vmul.f32 q6, q15, q4
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf2460cda // vfma.f32 q8, q11, q5
- .long 0xf208ccda // vfma.f32 q6, q12, q5
- .long 0xf2440cf2 // vfma.f32 q8, q10, q9
- .long 0xf20cccf2 // vfma.f32 q6, q14, q9
- .long 0xf3400dd6 // vmul.f32 q8, q8, q3
- .long 0xf2200dcc // vsub.f32 q0, q8, q6
- .long 0xf240ad6e // vadd.f32 q13, q0, q15
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xf2400d68 // vadd.f32 q8, q0, q12
- .long 0xf2000d6c // vadd.f32 q0, q0, q14
- .long 0xf34a8dd8 // vmul.f32 q12, q13, q4
- .long 0xf2408cda // vfma.f32 q12, q8, q5
- .long 0xf2408c72 // vfma.f32 q12, q0, q9
- .long 0xf2602d68 // vsub.f32 q9, q0, q12
- .long 0xf3088df2 // vmul.f32 q4, q12, q9
- .long 0xf2602fc0 // vmin.f32 q9, q8, q0
- .long 0xf26a2fe2 // vmin.f32 q9, q13, q9
- .long 0xf228ade2 // vsub.f32 q5, q12, q9
- .long 0xeec95aab // vdiv.f32 s11, s19, s23
- .long 0xee895a0b // vdiv.f32 s10, s18, s22
- .long 0xeec84aaa // vdiv.f32 s9, s17, s21
- .long 0xee884a0a // vdiv.f32 s8, s16, s20
- .long 0xf3b984e2 // vcge.f32 q4, q9, #0
- .long 0xf248cdc4 // vadd.f32 q14, q12, q2
- .long 0xf2284158 // vorr q2, q4, q4
- .long 0xf310417c // vbsl q2, q0, q14
- .long 0xf34ecdd6 // vmul.f32 q14, q15, q3
- .long 0xf2000fc0 // vmax.f32 q0, q8, q0
- .long 0xf224cd68 // vsub.f32 q6, q2, q12
- .long 0xf26c2de8 // vsub.f32 q9, q14, q12
- .long 0xf20aefc0 // vmax.f32 q7, q13, q0
- .long 0xf302cddc // vmul.f32 q6, q9, q6
- .long 0xf22e0d68 // vsub.f32 q0, q7, q12
- .long 0xf32eee6c // vcgt.f32 q7, q7, q14
- .long 0xeecd3aa1 // vdiv.f32 s7, s27, s3
- .long 0xee8d3a01 // vdiv.f32 s6, s26, s2
- .long 0xeecc2aa0 // vdiv.f32 s5, s25, s1
- .long 0xee8c2a00 // vdiv.f32 s4, s24, s0
- .long 0xf2082dc2 // vadd.f32 q1, q12, q1
- .long 0xf26e415e // vorr q10, q7, q7
- .long 0xf3524154 // vbsl q10, q1, q2
- .long 0xf2202de8 // vsub.f32 q1, q8, q12
- .long 0xf3082dd2 // vmul.f32 q1, q12, q1
- .long 0xeec35aab // vdiv.f32 s11, s7, s23
- .long 0xee835a0b // vdiv.f32 s10, s6, s22
- .long 0xeec24aaa // vdiv.f32 s9, s5, s21
- .long 0xee824a0a // vdiv.f32 s8, s4, s20
- .long 0xf2082dc4 // vadd.f32 q1, q12, q2
- .long 0xf2284158 // vorr q2, q4, q4
- .long 0xf31041d2 // vbsl q2, q8, q1
- .long 0xf2640d68 // vsub.f32 q8, q2, q12
- .long 0xf3022df0 // vmul.f32 q1, q9, q8
- .long 0xf26e015e // vorr q8, q7, q7
- .long 0xeec3daa1 // vdiv.f32 s27, s7, s3
- .long 0xee83da01 // vdiv.f32 s26, s6, s2
- .long 0xeec2caa0 // vdiv.f32 s25, s5, s1
- .long 0xee82ca00 // vdiv.f32 s24, s4, s0
- .long 0xf2082dcc // vadd.f32 q1, q12, q6
- .long 0xf3520154 // vbsl q8, q1, q2
- .long 0xf22a2de8 // vsub.f32 q1, q13, q12
- .long 0xf3082dd2 // vmul.f32 q1, q12, q1
- .long 0xeec35aab // vdiv.f32 s11, s7, s23
- .long 0xee835a0b // vdiv.f32 s10, s6, s22
- .long 0xeec24aaa // vdiv.f32 s9, s5, s21
- .long 0xee824a0a // vdiv.f32 s8, s4, s20
- .long 0xf2082dc4 // vadd.f32 q1, q12, q2
- .long 0xf31a81d2 // vbsl q4, q13, q1
- .long 0xf268ad68 // vsub.f32 q13, q4, q12
- .long 0xf3022dfa // vmul.f32 q1, q9, q13
- .long 0xecd2ab04 // vldmia r2, {d26-d27}
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xeec35aa1 // vdiv.f32 s11, s7, s3
- .long 0xee835a01 // vdiv.f32 s10, s6, s2
- .long 0xeec24aa0 // vdiv.f32 s9, s5, s1
- .long 0xee824a00 // vdiv.f32 s8, s4, s0
- .long 0xf2482dc4 // vadd.f32 q9, q12, q2
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xf312e1d8 // vbsl q7, q9, q4
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2628dee // vsub.f32 q12, q9, q15
- .long 0xf2622dc6 // vsub.f32 q9, q9, q3
- .long 0xf24eedc6 // vadd.f32 q15, q15, q3
- .long 0xf3426df6 // vmul.f32 q11, q9, q11
- .long 0xf22e6dec // vsub.f32 q3, q15, q14
- .long 0xf2486cfa // vfma.f32 q11, q12, q13
- .long 0xecddab04 // vldmia sp, {d26-d27}
- .long 0xf342adfa // vmul.f32 q13, q9, q13
- .long 0xf248acd0 // vfma.f32 q13, q12, q0
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xf3422dd0 // vmul.f32 q9, q9, q0
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2482cd0 // vfma.f32 q9, q12, q0
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xf2400fc0 // vmax.f32 q8, q8, q0
- .long 0xf2444fc0 // vmax.f32 q10, q10, q0
- .long 0xf24e8f40 // vmax.f32 q12, q7, q0
- .long 0xf2062de0 // vadd.f32 q1, q11, q8
- .long 0xf2024de4 // vadd.f32 q2, q9, q10
- .long 0xf20a0de8 // vadd.f32 q0, q13, q12
- .long 0xe28dd058 // add sp, sp, #88
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd0030 // pop {r4, r5}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
-
-HIDDEN _sk_saturation_vfp4
-.globl _sk_saturation_vfp4
-FUNCTION(_sk_saturation_vfp4)
-_sk_saturation_vfp4:
- .long 0xe92d0030 // push {r4, r5}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd068 // sub sp, sp, #104
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xf2604150 // vorr q10, q0, q0
- .long 0xec822b04 // vstmia r2, {d2-d3}
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xecc24b04 // vstmia r2, {d20-d21}
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xecc20b04 // vstmia r2, {d16-d17}
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf3400dd6 // vmul.f32 q8, q8, q3
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28d2050 // add r2, sp, #80
- .long 0xf3462dd6 // vmul.f32 q9, q11, q3
- .long 0xecc26b04 // vstmia r2, {d22-d23}
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xf3088dd6 // vmul.f32 q4, q12, q3
- .long 0xf2626fe0 // vmin.f32 q11, q9, q8
- .long 0xeccd8b04 // vstmia sp, {d24-d25}
- .long 0xf242cfe0 // vmax.f32 q14, q9, q8
- .long 0xec824b04 // vstmia r2, {d4-d5}
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf268af66 // vmin.f32 q13, q4, q11
- .long 0xf2486f6c // vmax.f32 q11, q4, q14
- .long 0xf242cf44 // vmax.f32 q14, q1, q2
- .long 0xf2622dea // vsub.f32 q9, q9, q13
- .long 0xf2260dea // vsub.f32 q0, q11, q13
- .long 0xf2626f44 // vmin.f32 q11, q1, q2
- .long 0xf244cfec // vmax.f32 q14, q10, q14
- .long 0xf2288d6a // vsub.f32 q4, q4, q13
- .long 0xf2646fe6 // vmin.f32 q11, q10, q11
- .long 0xf2600dea // vsub.f32 q8, q8, q13
- .long 0xf2c04050 // vmov.i32 q10, #0
- .long 0xf26ccde6 // vsub.f32 q14, q14, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2e23 // add r2, pc, #560
- .long 0xf34cedf6 // vmul.f32 q15, q14, q11
- .long 0xf30e2df2 // vmul.f32 q1, q15, q9
- .long 0xf3f92540 // vceq.f32 q9, q0, #0
- .long 0xf30e8dd8 // vmul.f32 q4, q15, q4
- .long 0xf262c1f2 // vorr q14, q9, q9
- .long 0xeec3baa1 // vdiv.f32 s23, s7, s3
- .long 0xee83ba01 // vdiv.f32 s22, s6, s2
- .long 0xeec2aaa0 // vdiv.f32 s21, s5, s1
- .long 0xee82aa00 // vdiv.f32 s20, s4, s0
- .long 0xf30e2df0 // vmul.f32 q1, q15, q8
- .long 0xf354c1da // vbsl q14, q10, q5
- .long 0xeec9baa1 // vdiv.f32 s23, s19, s3
- .long 0xeec35aa1 // vdiv.f32 s11, s7, s3
- .long 0xee89ba01 // vdiv.f32 s22, s18, s2
- .long 0xee835a01 // vdiv.f32 s10, s6, s2
- .long 0xeec8aaa0 // vdiv.f32 s21, s17, s1
- .long 0xeec24aa0 // vdiv.f32 s9, s5, s1
- .long 0xee88aa00 // vdiv.f32 s20, s16, s0
- .long 0xee824a00 // vdiv.f32 s8, s4, s0
- .long 0xf22281f2 // vorr q4, q9, q9
- .long 0xf35421d4 // vbsl q9, q10, q2
- .long 0xf31481da // vbsl q4, q10, q5
- .long 0xf422aacf // vld1.64 {d10-d11}, [r2]
- .long 0xe28f2e1e // add r2, pc, #480
- .long 0xf422cacf // vld1.64 {d12-d13}, [r2]
- .long 0xe28f2f7a // add r2, pc, #488
- .long 0xf3480dda // vmul.f32 q8, q12, q5
- .long 0xf4222acf // vld1.64 {d2-d3}, [r2]
- .long 0xe28d2050 // add r2, sp, #80
- .long 0xf308ed5a // vmul.f32 q7, q4, q5
- .long 0xecd24b04 // vldmia r2, {d20-d21}
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xf2440cdc // vfma.f32 q8, q10, q6
- .long 0xecd24b04 // vldmia r2, {d20-d21}
- .long 0xe28d2050 // add r2, sp, #80
- .long 0xf20cecdc // vfma.f32 q7, q14, q6
- .long 0xecd28b04 // vldmia r2, {d24-d25}
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xf2440cd2 // vfma.f32 q8, q10, q1
- .long 0xf202ecd2 // vfma.f32 q7, q9, q1
- .long 0xf3400dd6 // vmul.f32 q8, q8, q3
- .long 0xf2200dce // vsub.f32 q0, q8, q7
- .long 0xf240ed48 // vadd.f32 q15, q0, q4
- .long 0xf2400d6c // vadd.f32 q8, q0, q14
- .long 0xf2000d62 // vadd.f32 q0, q0, q9
- .long 0xf34eadda // vmul.f32 q13, q15, q5
- .long 0xf240acdc // vfma.f32 q13, q8, q6
- .long 0xf240ac52 // vfma.f32 q13, q0, q1
- .long 0xf2602d6a // vsub.f32 q9, q0, q13
- .long 0xf30a8df2 // vmul.f32 q4, q13, q9
- .long 0xf2602fc0 // vmin.f32 q9, q8, q0
- .long 0xf26e2fe2 // vmin.f32 q9, q15, q9
- .long 0xf22aade2 // vsub.f32 q5, q13, q9
- .long 0xeec93aab // vdiv.f32 s7, s19, s23
- .long 0xee893a0b // vdiv.f32 s6, s18, s22
- .long 0xeec82aaa // vdiv.f32 s5, s17, s21
- .long 0xee882a0a // vdiv.f32 s4, s16, s20
- .long 0xf3b984e2 // vcge.f32 q4, q9, #0
- .long 0xf24acdc2 // vadd.f32 q14, q13, q1
- .long 0xf2282158 // vorr q1, q4, q4
- .long 0xf310217c // vbsl q1, q0, q14
- .long 0xf346cdd6 // vmul.f32 q14, q11, q3
- .long 0xf2224d6a // vsub.f32 q2, q1, q13
- .long 0xf2000fc0 // vmax.f32 q0, q8, q0
- .long 0xf26c2dea // vsub.f32 q9, q14, q13
- .long 0xf302cdd4 // vmul.f32 q6, q9, q2
- .long 0xf20e4fc0 // vmax.f32 q2, q15, q0
- .long 0xf2240d6a // vsub.f32 q0, q2, q13
- .long 0xeecdfaa1 // vdiv.f32 s31, s27, s3
- .long 0xee8dfa01 // vdiv.f32 s30, s26, s2
- .long 0xeecceaa0 // vdiv.f32 s29, s25, s1
- .long 0xee8cea00 // vdiv.f32 s28, s24, s0
- .long 0xf20acdce // vadd.f32 q6, q13, q7
- .long 0xf324ee6c // vcgt.f32 q7, q2, q14
- .long 0xf26e415e // vorr q10, q7, q7
- .long 0xf35c4152 // vbsl q10, q6, q1
- .long 0xf2202dea // vsub.f32 q1, q8, q13
- .long 0xf30a2dd2 // vmul.f32 q1, q13, q1
- .long 0xeec3daab // vdiv.f32 s27, s7, s23
- .long 0xee83da0b // vdiv.f32 s26, s6, s22
- .long 0xeec2caaa // vdiv.f32 s25, s5, s21
- .long 0xee82ca0a // vdiv.f32 s24, s4, s20
- .long 0xf20a2dcc // vadd.f32 q1, q13, q6
- .long 0xf228c158 // vorr q6, q4, q4
- .long 0xf310c1d2 // vbsl q6, q8, q1
- .long 0xf26c0d6a // vsub.f32 q8, q6, q13
- .long 0xf3022df0 // vmul.f32 q1, q9, q8
- .long 0xf26e015e // vorr q8, q7, q7
- .long 0xeec35aa1 // vdiv.f32 s11, s7, s3
- .long 0xee835a01 // vdiv.f32 s10, s6, s2
- .long 0xeec24aa0 // vdiv.f32 s9, s5, s1
- .long 0xee824a00 // vdiv.f32 s8, s4, s0
- .long 0xf20a2dc4 // vadd.f32 q1, q13, q2
- .long 0xf352015c // vbsl q8, q1, q6
- .long 0xf22e2dea // vsub.f32 q1, q15, q13
- .long 0xf30a2dd2 // vmul.f32 q1, q13, q1
- .long 0xeec35aab // vdiv.f32 s11, s7, s23
- .long 0xee835a0b // vdiv.f32 s10, s6, s22
- .long 0xeec24aaa // vdiv.f32 s9, s5, s21
- .long 0xee824a0a // vdiv.f32 s8, s4, s20
- .long 0xf20a2dc4 // vadd.f32 q1, q13, q2
- .long 0xf31e81d2 // vbsl q4, q15, q1
- .long 0xf268ed6a // vsub.f32 q15, q4, q13
- .long 0xf3022dfe // vmul.f32 q1, q9, q15
- .long 0xeec35aa1 // vdiv.f32 s11, s7, s3
- .long 0xee835a01 // vdiv.f32 s10, s6, s2
- .long 0xeec24aa0 // vdiv.f32 s9, s5, s1
- .long 0xee824a00 // vdiv.f32 s8, s4, s0
- .long 0xf24a2dc4 // vadd.f32 q9, q13, q2
- .long 0xf312e1d8 // vbsl q7, q9, q4
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf262ade6 // vsub.f32 q13, q9, q11
- .long 0xf2622dc6 // vsub.f32 q9, q9, q3
- .long 0xf2466dc6 // vadd.f32 q11, q11, q3
- .long 0xf342edf8 // vmul.f32 q15, q9, q12
- .long 0xecd28b04 // vldmia r2, {d24-d25}
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xf2266dec // vsub.f32 q3, q11, q14
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xf24aecf8 // vfma.f32 q15, q13, q12
- .long 0xecdd8b04 // vldmia sp, {d24-d25}
- .long 0xf3428df8 // vmul.f32 q12, q9, q12
- .long 0xf24a8cd0 // vfma.f32 q12, q13, q0
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xf3422dd0 // vmul.f32 q9, q9, q0
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf24a2cd0 // vfma.f32 q9, q13, q0
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xf2400fc0 // vmax.f32 q8, q8, q0
- .long 0xf2444fc0 // vmax.f32 q10, q10, q0
- .long 0xf24eaf40 // vmax.f32 q13, q7, q0
- .long 0xf20e2de0 // vadd.f32 q1, q15, q8
- .long 0xf2024de4 // vadd.f32 q2, q9, q10
- .long 0xf2080dea // vadd.f32 q0, q12, q13
- .long 0xe28dd068 // add sp, sp, #104
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd0030 // pop {r4, r5}
- .long 0xe12fff12 // bx r2
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
-
-HIDDEN _sk_color_vfp4
-.globl _sk_color_vfp4
-FUNCTION(_sk_color_vfp4)
-_sk_color_vfp4:
- .long 0xe92d0030 // push {r4, r5}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd068 // sub sp, sp, #104
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xec824b04 // vstmia r2, {d4-d5}
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xec822b04 // vstmia r2, {d2-d3}
- .long 0xe28d2050 // add r2, sp, #80
- .long 0xec820b04 // vstmia r2, {d0-d1}
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2f81 // add r2, pc, #516
- .long 0xf3462dd0 // vmul.f32 q9, q11, q0
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f2f82 // add r2, pc, #520
- .long 0xf3460dd2 // vmul.f32 q8, q11, q1
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xe28f2f83 // add r2, pc, #524
- .long 0xf3068dd4 // vmul.f32 q4, q11, q2
- .long 0xf422cacf // vld1.64 {d12-d13}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf342adf8 // vmul.f32 q13, q9, q12
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xf344cdf8 // vmul.f32 q14, q10, q12
- .long 0xecc24b04 // vstmia r2, {d20-d21}
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf240acfe // vfma.f32 q13, q8, q15
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf244ccfe // vfma.f32 q14, q10, q15
- .long 0xeccd4b04 // vstmia sp, {d20-d21}
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xecc24b04 // vstmia r2, {d20-d21}
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xf248ac5c // vfma.f32 q13, q4, q6
- .long 0xf244ccdc // vfma.f32 q14, q10, q6
- .long 0xf34ccdd6 // vmul.f32 q14, q14, q3
- .long 0xf26cadea // vsub.f32 q13, q14, q13
- .long 0xf242cdea // vadd.f32 q14, q9, q13
- .long 0xf2400dea // vadd.f32 q8, q8, q13
- .long 0xf208ad6a // vadd.f32 q5, q4, q13
- .long 0xf34c8df8 // vmul.f32 q12, q14, q12
- .long 0xf2408cfe // vfma.f32 q12, q8, q15
- .long 0xf24a8c5c // vfma.f32 q12, q5, q6
- .long 0xf26a2d68 // vsub.f32 q9, q5, q12
- .long 0xf308cdf2 // vmul.f32 q6, q12, q9
- .long 0xf2602fca // vmin.f32 q9, q8, q5
- .long 0xf26c2fe2 // vmin.f32 q9, q14, q9
- .long 0xf2288de2 // vsub.f32 q4, q12, q9
- .long 0xf3f924e2 // vcge.f32 q9, q9, #0
- .long 0xf262e1f2 // vorr q15, q9, q9
- .long 0xeecdfaa9 // vdiv.f32 s31, s27, s19
- .long 0xee8dfa09 // vdiv.f32 s30, s26, s18
- .long 0xeecceaa8 // vdiv.f32 s29, s25, s17
- .long 0xee8cea08 // vdiv.f32 s28, s24, s16
- .long 0xf248adce // vadd.f32 q13, q12, q7
- .long 0xf35ae17a // vbsl q15, q5, q13
- .long 0xf200afca // vmax.f32 q5, q8, q5
- .long 0xf346add6 // vmul.f32 q13, q11, q3
- .long 0xf22ecde8 // vsub.f32 q6, q15, q12
- .long 0xf20cafca // vmax.f32 q5, q14, q5
- .long 0xf26a4de8 // vsub.f32 q10, q13, q12
- .long 0xf22aed68 // vsub.f32 q7, q5, q12
- .long 0xf304cddc // vmul.f32 q6, q10, q6
- .long 0xeecd5aaf // vdiv.f32 s11, s27, s31
- .long 0xee8d5a0f // vdiv.f32 s10, s26, s30
- .long 0xeecc4aae // vdiv.f32 s9, s25, s29
- .long 0xee8c4a0e // vdiv.f32 s8, s24, s28
- .long 0xf32ace6a // vcgt.f32 q6, q5, q13
- .long 0xf2084dc4 // vadd.f32 q2, q12, q2
- .long 0xf22ca15c // vorr q5, q6, q6
- .long 0xf314a17e // vbsl q5, q2, q15
- .long 0xf260ede8 // vsub.f32 q15, q8, q12
- .long 0xf3084dfe // vmul.f32 q2, q12, q15
- .long 0xeec53aa9 // vdiv.f32 s7, s11, s19
- .long 0xee853a09 // vdiv.f32 s6, s10, s18
- .long 0xeec42aa8 // vdiv.f32 s5, s9, s17
- .long 0xee842a08 // vdiv.f32 s4, s8, s16
- .long 0xf248edc2 // vadd.f32 q15, q12, q1
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xf31021fe // vbsl q1, q8, q15
- .long 0xf2620d68 // vsub.f32 q8, q1, q12
- .long 0xf3044df0 // vmul.f32 q2, q10, q8
- .long 0xf26c015c // vorr q8, q6, q6
- .long 0xeec51aaf // vdiv.f32 s3, s11, s31
- .long 0xee851a0f // vdiv.f32 s2, s10, s30
- .long 0xeec40aae // vdiv.f32 s1, s9, s29
- .long 0xee840a0e // vdiv.f32 s0, s8, s28
- .long 0xf248edc0 // vadd.f32 q15, q12, q0
- .long 0xf35e01d2 // vbsl q8, q15, q1
- .long 0xf26cede8 // vsub.f32 q15, q14, q12
- .long 0xf3080dfe // vmul.f32 q0, q12, q15
- .long 0xeec13aa9 // vdiv.f32 s7, s3, s19
- .long 0xee813a09 // vdiv.f32 s6, s2, s18
- .long 0xeec02aa8 // vdiv.f32 s5, s1, s17
- .long 0xee802a08 // vdiv.f32 s4, s0, s16
- .long 0xf248edc2 // vadd.f32 q15, q12, q1
- .long 0xf35c21fe // vbsl q9, q14, q15
- .long 0xf262cde8 // vsub.f32 q14, q9, q12
- .long 0xf3040dfc // vmul.f32 q0, q10, q14
- .long 0xecddcb04 // vldmia sp, {d28-d29}
- .long 0xeec13aaf // vdiv.f32 s7, s3, s31
- .long 0xee813a0f // vdiv.f32 s6, s2, s30
- .long 0xeec02aae // vdiv.f32 s5, s1, s29
- .long 0xee802a0e // vdiv.f32 s4, s0, s28
- .long 0xf2484dc2 // vadd.f32 q10, q12, q1
- .long 0xecd28b04 // vldmia r2, {d24-d25}
- .long 0xe28d2050 // add r2, sp, #80
- .long 0xf314c1f2 // vbsl q6, q10, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2624dc6 // vsub.f32 q10, q9, q3
- .long 0xf2622de6 // vsub.f32 q9, q9, q11
- .long 0xf2466dc6 // vadd.f32 q11, q11, q3
- .long 0xf3428df8 // vmul.f32 q12, q9, q12
- .long 0xf2266dea // vsub.f32 q3, q11, q13
- .long 0xf2448cfc // vfma.f32 q12, q10, q14
- .long 0xecd2cb04 // vldmia r2, {d28-d29}
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xecd2eb04 // vldmia r2, {d30-d31}
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xf342cdfc // vmul.f32 q14, q9, q14
- .long 0xf244ccfe // vfma.f32 q14, q10, q15
- .long 0xecd2eb04 // vldmia r2, {d30-d31}
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xf3422dfe // vmul.f32 q9, q9, q15
- .long 0xf2c0e050 // vmov.i32 q15, #0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2400fee // vmax.f32 q8, q8, q15
- .long 0xf2442cd0 // vfma.f32 q9, q10, q0
- .long 0xf24c4f6e // vmax.f32 q10, q6, q15
- .long 0xf24aef6e // vmax.f32 q15, q5, q15
- .long 0xf2082de0 // vadd.f32 q1, q12, q8
- .long 0xf20c0de4 // vadd.f32 q0, q14, q10
- .long 0xf2024dee // vadd.f32 q2, q9, q15
- .long 0xe28dd068 // add sp, sp, #104
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd0030 // pop {r4, r5}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
-
-HIDDEN _sk_luminosity_vfp4
-.globl _sk_luminosity_vfp4
-FUNCTION(_sk_luminosity_vfp4)
-_sk_luminosity_vfp4:
- .long 0xe92d0030 // push {r4, r5}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd068 // sub sp, sp, #104
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xec824b04 // vstmia r2, {d4-d5}
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xec8d2b04 // vstmia sp, {d2-d3}
- .long 0xec820b04 // vstmia r2, {d0-d1}
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28d2050 // add r2, sp, #80
- .long 0xf3402dd6 // vmul.f32 q9, q8, q3
- .long 0xecc20b04 // vstmia r2, {d16-d17}
- .long 0xe28f2f7f // add r2, pc, #508
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xf340cd78 // vmul.f32 q14, q0, q12
- .long 0xecc20b04 // vstmia r2, {d16-d17}
- .long 0xe28f2e1f // add r2, pc, #496
- .long 0xf3400dd6 // vmul.f32 q8, q8, q3
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xf342adf8 // vmul.f32 q13, q9, q12
- .long 0xf242cc7e // vfma.f32 q14, q1, q15
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xf3048dd6 // vmul.f32 q4, q10, q3
- .long 0xf240acfe // vfma.f32 q13, q8, q15
- .long 0xecc24b04 // vstmia r2, {d20-d21}
- .long 0xe28f2f75 // add r2, pc, #468
- .long 0xf422cacf // vld1.64 {d12-d13}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28d2040 // add r2, sp, #64
- .long 0xf244cc5c // vfma.f32 q14, q2, q6
- .long 0xf248ac5c // vfma.f32 q13, q4, q6
- .long 0xf34ccdf6 // vmul.f32 q14, q14, q11
- .long 0xf26cadea // vsub.f32 q13, q14, q13
- .long 0xf242cdea // vadd.f32 q14, q9, q13
- .long 0xf2400dea // vadd.f32 q8, q8, q13
- .long 0xf208ad6a // vadd.f32 q5, q4, q13
- .long 0xf34c8df8 // vmul.f32 q12, q14, q12
- .long 0xf2408cfe // vfma.f32 q12, q8, q15
- .long 0xf24a8c5c // vfma.f32 q12, q5, q6
- .long 0xf26a2d68 // vsub.f32 q9, q5, q12
- .long 0xf308cdf2 // vmul.f32 q6, q12, q9
- .long 0xf2602fca // vmin.f32 q9, q8, q5
- .long 0xf26c2fe2 // vmin.f32 q9, q14, q9
- .long 0xf2288de2 // vsub.f32 q4, q12, q9
- .long 0xf3f924e2 // vcge.f32 q9, q9, #0
- .long 0xf262e1f2 // vorr q15, q9, q9
- .long 0xeecdfaa9 // vdiv.f32 s31, s27, s19
- .long 0xee8dfa09 // vdiv.f32 s30, s26, s18
- .long 0xeecceaa8 // vdiv.f32 s29, s25, s17
- .long 0xee8cea08 // vdiv.f32 s28, s24, s16
- .long 0xf248adce // vadd.f32 q13, q12, q7
- .long 0xf35ae17a // vbsl q15, q5, q13
- .long 0xf200afca // vmax.f32 q5, q8, q5
- .long 0xf346add6 // vmul.f32 q13, q11, q3
- .long 0xf22ecde8 // vsub.f32 q6, q15, q12
- .long 0xf20cafca // vmax.f32 q5, q14, q5
- .long 0xf26a4de8 // vsub.f32 q10, q13, q12
- .long 0xf22aed68 // vsub.f32 q7, q5, q12
- .long 0xf304cddc // vmul.f32 q6, q10, q6
- .long 0xeecd5aaf // vdiv.f32 s11, s27, s31
- .long 0xee8d5a0f // vdiv.f32 s10, s26, s30
- .long 0xeecc4aae // vdiv.f32 s9, s25, s29
- .long 0xee8c4a0e // vdiv.f32 s8, s24, s28
- .long 0xf32ace6a // vcgt.f32 q6, q5, q13
- .long 0xf2084dc4 // vadd.f32 q2, q12, q2
- .long 0xf22ca15c // vorr q5, q6, q6
- .long 0xf314a17e // vbsl q5, q2, q15
- .long 0xf260ede8 // vsub.f32 q15, q8, q12
- .long 0xf3084dfe // vmul.f32 q2, q12, q15
- .long 0xeec53aa9 // vdiv.f32 s7, s11, s19
- .long 0xee853a09 // vdiv.f32 s6, s10, s18
- .long 0xeec42aa8 // vdiv.f32 s5, s9, s17
- .long 0xee842a08 // vdiv.f32 s4, s8, s16
- .long 0xf248edc2 // vadd.f32 q15, q12, q1
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xf31021fe // vbsl q1, q8, q15
- .long 0xf2620d68 // vsub.f32 q8, q1, q12
- .long 0xf3044df0 // vmul.f32 q2, q10, q8
- .long 0xf26c015c // vorr q8, q6, q6
- .long 0xeec51aaf // vdiv.f32 s3, s11, s31
- .long 0xee851a0f // vdiv.f32 s2, s10, s30
- .long 0xeec40aae // vdiv.f32 s1, s9, s29
- .long 0xee840a0e // vdiv.f32 s0, s8, s28
- .long 0xf248edc0 // vadd.f32 q15, q12, q0
- .long 0xf35e01d2 // vbsl q8, q15, q1
- .long 0xf26cede8 // vsub.f32 q15, q14, q12
- .long 0xf3080dfe // vmul.f32 q0, q12, q15
- .long 0xeec13aa9 // vdiv.f32 s7, s3, s19
- .long 0xee813a09 // vdiv.f32 s6, s2, s18
- .long 0xeec02aa8 // vdiv.f32 s5, s1, s17
- .long 0xee802a08 // vdiv.f32 s4, s0, s16
- .long 0xf248edc2 // vadd.f32 q15, q12, q1
- .long 0xf35c21fe // vbsl q9, q14, q15
- .long 0xf262cde8 // vsub.f32 q14, q9, q12
- .long 0xf3040dfc // vmul.f32 q0, q10, q14
- .long 0xecddcb04 // vldmia sp, {d28-d29}
- .long 0xeec13aaf // vdiv.f32 s7, s3, s31
- .long 0xee813a0f // vdiv.f32 s6, s2, s30
- .long 0xeec02aae // vdiv.f32 s5, s1, s29
- .long 0xee802a0e // vdiv.f32 s4, s0, s28
- .long 0xf2484dc2 // vadd.f32 q10, q12, q1
- .long 0xecd28b04 // vldmia r2, {d24-d25}
- .long 0xe28d2050 // add r2, sp, #80
- .long 0xf314c1f2 // vbsl q6, q10, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2624de6 // vsub.f32 q10, q9, q11
- .long 0xf2622dc6 // vsub.f32 q9, q9, q3
- .long 0xf2466dc6 // vadd.f32 q11, q11, q3
- .long 0xf3428df8 // vmul.f32 q12, q9, q12
- .long 0xf2266dea // vsub.f32 q3, q11, q13
- .long 0xf2448cfc // vfma.f32 q12, q10, q14
- .long 0xecd2cb04 // vldmia r2, {d28-d29}
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xecd2eb04 // vldmia r2, {d30-d31}
- .long 0xe28d2030 // add r2, sp, #48
- .long 0xf342cdfc // vmul.f32 q14, q9, q14
- .long 0xf244ccfe // vfma.f32 q14, q10, q15
- .long 0xecd2eb04 // vldmia r2, {d30-d31}
- .long 0xe28d2020 // add r2, sp, #32
- .long 0xec920b04 // vldmia r2, {d0-d1}
- .long 0xf3422dfe // vmul.f32 q9, q9, q15
- .long 0xf2c0e050 // vmov.i32 q15, #0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2400fee // vmax.f32 q8, q8, q15
- .long 0xf2442cd0 // vfma.f32 q9, q10, q0
- .long 0xf24c4f6e // vmax.f32 q10, q6, q15
- .long 0xf24aef6e // vmax.f32 q15, q5, q15
- .long 0xf2082de0 // vadd.f32 q1, q12, q8
- .long 0xf20c0de4 // vadd.f32 q0, q14, q10
- .long 0xf2024dee // vadd.f32 q2, q9, q15
- .long 0xe28dd068 // add sp, sp, #104
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd0030 // pop {r4, r5}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3f170a3d // .word 0x3f170a3d
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
- .long 0x3de147ae // .word 0x3de147ae
-
-HIDDEN _sk_srcover_rgba_8888_vfp4
-.globl _sk_srcover_rgba_8888_vfp4
-FUNCTION(_sk_srcover_rgba_8888_vfp4)
-_sk_srcover_rgba_8888_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xed2d8b08 // vpush {d8-d11}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe5905004 // ldr r5, [r0, #4]
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5906000 // ldr r6, [r0]
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe5903008 // ldr r3, [r0, #8]
- .long 0xe0020592 // mul r2, r2, r5
- .long 0xe2805010 // add r5, r0, #16
- .long 0xe3530000 // cmp r3, #0
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe2804020 // add r4, r0, #32
- .long 0xe0822106 // add r2, r2, r6, lsl #2
- .long 0x1a000032 // bne 1b00 <sk_srcover_rgba_8888_vfp4+0x110>
- .long 0xf4620a8f // vld1.32 {d16-d17}, [r2]
- .long 0xf3c7405f // vmov.i32 q10, #255
- .long 0xe28f6f51 // add r6, pc, #324
- .long 0xf3f02070 // vshr.u32 q9, q8, #16
- .long 0xf4668acf // vld1.64 {d24-d25}, [r6]
- .long 0xf2c76f50 // vmov.f32 q11, #1
- .long 0xe3530000 // cmp r3, #0
- .long 0xf240e1f4 // vand q15, q8, q10
- .long 0xf3a88070 // vshr.u32 q4, q8, #24
- .long 0xf3f80070 // vshr.u32 q8, q8, #8
- .long 0xf2666dc6 // vsub.f32 q11, q11, q3
- .long 0xf24001f4 // vand q8, q8, q10
- .long 0xf3bb8648 // vcvt.f32.s32 q4, q4
- .long 0xf3066d78 // vmul.f32 q3, q3, q12
- .long 0xf24221f4 // vand q9, q9, q10
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3022d78 // vmul.f32 q1, q1, q12
- .long 0xf3fbe66e // vcvt.f32.s32 q15, q15
- .long 0xf3000d78 // vmul.f32 q0, q0, q12
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf3044d78 // vmul.f32 q2, q2, q12
- .long 0xf2086c76 // vfma.f32 q3, q4, q11
- .long 0xf445eacf // vst1.64 {d30-d31}, [r5]
- .long 0xf2002cf6 // vfma.f32 q1, q8, q11
- .long 0xf4440acf // vst1.64 {d16-d17}, [r4]
- .long 0xf20e0cf6 // vfma.f32 q0, q15, q11
- .long 0xf44e2acf // vst1.64 {d18-d19}, [lr]
- .long 0xf2024cf6 // vfma.f32 q2, q9, q11
- .long 0xf40c8acf // vst1.64 {d8-d9}, [ip]
- .long 0xf2c3a65f // vmov.i32 q13, #1056964608
- .long 0xf206ad6a // vadd.f32 q5, q3, q13
- .long 0xf2424d6a // vadd.f32 q10, q1, q13
- .long 0xf240ed6a // vadd.f32 q15, q0, q13
- .long 0xf244cd6a // vadd.f32 q14, q2, q13
- .long 0xf3bba7ca // vcvt.u32.f32 q5, q5
- .long 0xf3fb47e4 // vcvt.u32.f32 q10, q10
- .long 0xf3fbe7ee // vcvt.u32.f32 q15, q15
- .long 0xf3fbc7ec // vcvt.u32.f32 q14, q14
- .long 0xf2b8a55a // vshl.s32 q5, q5, #24
- .long 0xf2e84574 // vshl.s32 q10, q10, #8
- .long 0xf26ae17e // vorr q15, q5, q15
- .long 0xf2f0c57c // vshl.s32 q14, q14, #16
- .long 0xf26e01f4 // vorr q8, q15, q10
- .long 0xf26001fc // vorr q8, q8, q14
- .long 0x1a000015 // bne 1b40 <sk_srcover_rgba_8888_vfp4+0x150>
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xecbd8b08 // vpop {d8-d11}
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe2036003 // and r6, r3, #3
- .long 0xe3560001 // cmp r6, #1
- .long 0x0a000017 // beq 1b6c <sk_srcover_rgba_8888_vfp4+0x17c>
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe3560002 // cmp r6, #2
- .long 0x0a000005 // beq 1b30 <sk_srcover_rgba_8888_vfp4+0x140>
- .long 0xe3560003 // cmp r6, #3
- .long 0x1affffc5 // bne 1a38 <sk_srcover_rgba_8888_vfp4+0x48>
- .long 0xe3a06000 // mov r6, #0
- .long 0xeea06b90 // vdup.32 q8, r6
- .long 0xe2826008 // add r6, r2, #8
- .long 0xf4e6183f // vld1.32 {d17[0]}, [r6 :32]
- .long 0xedd22b00 // vldr d18, [r2]
- .long 0xf2f008e2 // vext.8 q8, q8, q9, #8
- .long 0xf2f008e0 // vext.8 q8, q8, q8, #8
- .long 0xeaffffbd // b 1a38 <sk_srcover_rgba_8888_vfp4+0x48>
- .long 0xe2033003 // and r3, r3, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a00000b // beq 1b7c <sk_srcover_rgba_8888_vfp4+0x18c>
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000003 // beq 1b64 <sk_srcover_rgba_8888_vfp4+0x174>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffe3 // bne 1aec <sk_srcover_rgba_8888_vfp4+0xfc>
- .long 0xe2823008 // add r3, r2, #8
- .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32]
- .long 0xedc20b00 // vstr d16, [r2]
- .long 0xeaffffdf // b 1aec <sk_srcover_rgba_8888_vfp4+0xfc>
- .long 0xe3a06000 // mov r6, #0
- .long 0xeea06b90 // vdup.32 q8, r6
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffae // b 1a38 <sk_srcover_rgba_8888_vfp4+0x48>
- .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffd9 // b 1aec <sk_srcover_rgba_8888_vfp4+0xfc>
- .long 0xe320f000 // nop {0}
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
-
-HIDDEN _sk_srcover_bgra_8888_vfp4
-.globl _sk_srcover_bgra_8888_vfp4
-FUNCTION(_sk_srcover_bgra_8888_vfp4)
-_sk_srcover_bgra_8888_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xed2d8b08 // vpush {d8-d11}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe5905004 // ldr r5, [r0, #4]
- .long 0xe280e010 // add lr, r0, #16
- .long 0xe5906000 // ldr r6, [r0]
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe5903008 // ldr r3, [r0, #8]
- .long 0xe0020592 // mul r2, r2, r5
- .long 0xe2805030 // add r5, r0, #48
- .long 0xe3530000 // cmp r3, #0
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe2804020 // add r4, r0, #32
- .long 0xe0822106 // add r2, r2, r6, lsl #2
- .long 0x1a000032 // bne 1ca8 <sk_srcover_bgra_8888_vfp4+0x110>
- .long 0xf4620a8f // vld1.32 {d16-d17}, [r2]
- .long 0xf3c7405f // vmov.i32 q10, #255
- .long 0xe28f6f51 // add r6, pc, #324
- .long 0xf3f02070 // vshr.u32 q9, q8, #16
- .long 0xf4668acf // vld1.64 {d24-d25}, [r6]
- .long 0xf2c76f50 // vmov.f32 q11, #1
- .long 0xe3530000 // cmp r3, #0
- .long 0xf240e1f4 // vand q15, q8, q10
- .long 0xf3a88070 // vshr.u32 q4, q8, #24
- .long 0xf3f80070 // vshr.u32 q8, q8, #8
- .long 0xf2666dc6 // vsub.f32 q11, q11, q3
- .long 0xf24001f4 // vand q8, q8, q10
- .long 0xf3bb8648 // vcvt.f32.s32 q4, q4
- .long 0xf3066d78 // vmul.f32 q3, q3, q12
- .long 0xf24221f4 // vand q9, q9, q10
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3022d78 // vmul.f32 q1, q1, q12
- .long 0xf3fbe66e // vcvt.f32.s32 q15, q15
- .long 0xf3044d78 // vmul.f32 q2, q2, q12
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf3000d78 // vmul.f32 q0, q0, q12
- .long 0xf2086c76 // vfma.f32 q3, q4, q11
- .long 0xf445eacf // vst1.64 {d30-d31}, [r5]
- .long 0xf2002cf6 // vfma.f32 q1, q8, q11
- .long 0xf4440acf // vst1.64 {d16-d17}, [r4]
- .long 0xf20e4cf6 // vfma.f32 q2, q15, q11
- .long 0xf44e2acf // vst1.64 {d18-d19}, [lr]
- .long 0xf2020cf6 // vfma.f32 q0, q9, q11
- .long 0xf40c8acf // vst1.64 {d8-d9}, [ip]
- .long 0xf2c3a65f // vmov.i32 q13, #1056964608
- .long 0xf206ad6a // vadd.f32 q5, q3, q13
- .long 0xf2424d6a // vadd.f32 q10, q1, q13
- .long 0xf244ed6a // vadd.f32 q15, q2, q13
- .long 0xf240cd6a // vadd.f32 q14, q0, q13
- .long 0xf3bba7ca // vcvt.u32.f32 q5, q5
- .long 0xf3fb47e4 // vcvt.u32.f32 q10, q10
- .long 0xf3fbe7ee // vcvt.u32.f32 q15, q15
- .long 0xf3fbc7ec // vcvt.u32.f32 q14, q14
- .long 0xf2b8a55a // vshl.s32 q5, q5, #24
- .long 0xf2e84574 // vshl.s32 q10, q10, #8
- .long 0xf26ae17e // vorr q15, q5, q15
- .long 0xf2f0c57c // vshl.s32 q14, q14, #16
- .long 0xf26e01f4 // vorr q8, q15, q10
- .long 0xf26001fc // vorr q8, q8, q14
- .long 0x1a000015 // bne 1ce8 <sk_srcover_bgra_8888_vfp4+0x150>
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xecbd8b08 // vpop {d8-d11}
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe2036003 // and r6, r3, #3
- .long 0xe3560001 // cmp r6, #1
- .long 0x0a000017 // beq 1d14 <sk_srcover_bgra_8888_vfp4+0x17c>
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe3560002 // cmp r6, #2
- .long 0x0a000005 // beq 1cd8 <sk_srcover_bgra_8888_vfp4+0x140>
- .long 0xe3560003 // cmp r6, #3
- .long 0x1affffc5 // bne 1be0 <sk_srcover_bgra_8888_vfp4+0x48>
- .long 0xe3a06000 // mov r6, #0
- .long 0xeea06b90 // vdup.32 q8, r6
- .long 0xe2826008 // add r6, r2, #8
- .long 0xf4e6183f // vld1.32 {d17[0]}, [r6 :32]
- .long 0xedd22b00 // vldr d18, [r2]
- .long 0xf2f008e2 // vext.8 q8, q8, q9, #8
- .long 0xf2f008e0 // vext.8 q8, q8, q8, #8
- .long 0xeaffffbd // b 1be0 <sk_srcover_bgra_8888_vfp4+0x48>
- .long 0xe2033003 // and r3, r3, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a00000b // beq 1d24 <sk_srcover_bgra_8888_vfp4+0x18c>
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000003 // beq 1d0c <sk_srcover_bgra_8888_vfp4+0x174>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffe3 // bne 1c94 <sk_srcover_bgra_8888_vfp4+0xfc>
- .long 0xe2823008 // add r3, r2, #8
- .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32]
- .long 0xedc20b00 // vstr d16, [r2]
- .long 0xeaffffdf // b 1c94 <sk_srcover_bgra_8888_vfp4+0xfc>
- .long 0xe3a06000 // mov r6, #0
- .long 0xeea06b90 // vdup.32 q8, r6
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffae // b 1be0 <sk_srcover_bgra_8888_vfp4+0x48>
- .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffd9 // b 1c94 <sk_srcover_bgra_8888_vfp4+0xfc>
- .long 0xe320f000 // nop {0}
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
-
-HIDDEN _sk_clamp_0_vfp4
-.globl _sk_clamp_0_vfp4
-FUNCTION(_sk_clamp_0_vfp4)
-_sk_clamp_0_vfp4:
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2000f60 // vmax.f32 q0, q0, q8
- .long 0xf2022f60 // vmax.f32 q1, q1, q8
- .long 0xf2044f60 // vmax.f32 q2, q2, q8
- .long 0xf2066f60 // vmax.f32 q3, q3, q8
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_clamp_1_vfp4
-.globl _sk_clamp_1_vfp4
-FUNCTION(_sk_clamp_1_vfp4)
-_sk_clamp_1_vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2200f60 // vmin.f32 q0, q0, q8
- .long 0xf2222f60 // vmin.f32 q1, q1, q8
- .long 0xf2244f60 // vmin.f32 q2, q2, q8
- .long 0xf2266f60 // vmin.f32 q3, q3, q8
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_clamp_a_vfp4
-.globl _sk_clamp_a_vfp4
-FUNCTION(_sk_clamp_a_vfp4)
-_sk_clamp_a_vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2266f60 // vmin.f32 q3, q3, q8
- .long 0xf2200f46 // vmin.f32 q0, q0, q3
- .long 0xf2222f46 // vmin.f32 q1, q1, q3
- .long 0xf2244f46 // vmin.f32 q2, q2, q3
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_clamp_a_dst_vfp4
-.globl _sk_clamp_a_dst_vfp4
-FUNCTION(_sk_clamp_a_dst_vfp4)
-_sk_clamp_a_dst_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xe280c040 // add ip, r0, #64
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xf46c2acf // vld1.64 {d18-d19}, [ip]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf2620fe0 // vmin.f32 q8, q9, q8
- .long 0xe280e010 // add lr, r0, #16
- .long 0xe2803030 // add r3, r0, #48
- .long 0xf46e2acf // vld1.64 {d18-d19}, [lr]
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xf4636acf // vld1.64 {d22-d23}, [r3]
- .long 0xf2622fe0 // vmin.f32 q9, q9, q8
- .long 0xf2644fe0 // vmin.f32 q10, q10, q8
- .long 0xf44c0acf // vst1.64 {d16-d17}, [ip]
- .long 0xf2666fe0 // vmin.f32 q11, q11, q8
- .long 0xf44e2acf // vst1.64 {d18-d19}, [lr]
- .long 0xf4424acf // vst1.64 {d20-d21}, [r2]
- .long 0xf4436acf // vst1.64 {d22-d23}, [r3]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_set_rgb_vfp4
-.globl _sk_set_rgb_vfp4
-FUNCTION(_sk_set_rgb_vfp4)
-_sk_set_rgb_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe3a0c008 // mov ip, #8
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe283e004 // add lr, r3, #4
- .long 0xf4a30cbc // vld1.32 {d0[]-d1[]}, [r3 :32], ip
- .long 0xf4ae2cbf // vld1.32 {d2[]-d3[]}, [lr :32]
- .long 0xf4a34cbf // vld1.32 {d4[]-d5[]}, [r3 :32]
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_swap_rb_vfp4
-.globl _sk_swap_rb_vfp4
-FUNCTION(_sk_swap_rb_vfp4)
-_sk_swap_rb_vfp4:
- .long 0xf2600150 // vorr q8, q0, q0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2240154 // vorr q0, q2, q2
- .long 0xf22041f0 // vorr q2, q8, q8
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_invert_vfp4
-.globl _sk_invert_vfp4
-FUNCTION(_sk_invert_vfp4)
-_sk_invert_vfp4:
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2200dc0 // vsub.f32 q0, q8, q0
- .long 0xf2202dc2 // vsub.f32 q1, q8, q1
- .long 0xf2204dc4 // vsub.f32 q2, q8, q2
- .long 0xf2206dc6 // vsub.f32 q3, q8, q3
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_move_src_dst_vfp4
-.globl _sk_move_src_dst_vfp4
-FUNCTION(_sk_move_src_dst_vfp4)
-_sk_move_src_dst_vfp4:
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf4022acf // vst1.64 {d2-d3}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf4020acf // vst1.64 {d0-d1}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf4024acf // vst1.64 {d4-d5}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf4026acf // vst1.64 {d6-d7}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_move_dst_src_vfp4
-.globl _sk_move_dst_src_vfp4
-FUNCTION(_sk_move_dst_src_vfp4)
-_sk_move_dst_src_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xe2803010 // add r3, r0, #16
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf4224acf // vld1.64 {d4-d5}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf4222acf // vld1.64 {d2-d3}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf4230acf // vld1.64 {d0-d1}, [r3]
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_premul_vfp4
-.globl _sk_premul_vfp4
-FUNCTION(_sk_premul_vfp4)
-_sk_premul_vfp4:
- .long 0xf3000d56 // vmul.f32 q0, q0, q3
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3022d56 // vmul.f32 q1, q1, q3
- .long 0xf3044d56 // vmul.f32 q2, q2, q3
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_premul_dst_vfp4
-.globl _sk_premul_dst_vfp4
-FUNCTION(_sk_premul_dst_vfp4)
-_sk_premul_dst_vfp4:
- .long 0xe2802040 // add r2, r0, #64
- .long 0xe2803020 // add r3, r0, #32
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xe280c010 // add ip, r0, #16
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf3404df4 // vmul.f32 q10, q8, q10
- .long 0xf46c2acf // vld1.64 {d18-d19}, [ip]
- .long 0xf3422df0 // vmul.f32 q9, q9, q8
- .long 0xf3400df6 // vmul.f32 q8, q8, q11
- .long 0xf44c2acf // vst1.64 {d18-d19}, [ip]
- .long 0xf4434acf // vst1.64 {d20-d21}, [r3]
- .long 0xf4420acf // vst1.64 {d16-d17}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_unpremul_vfp4
-.globl _sk_unpremul_vfp4
-FUNCTION(_sk_unpremul_vfp4)
-_sk_unpremul_vfp4:
- .long 0xed2dab04 // vpush {d10-d11}
- .long 0xed2d8b02 // vpush {d8}
- .long 0xeeb78a00 // vmov.f32 s16, #112
- .long 0xe28f203c // add r2, pc, #60
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xf2c02050 // vmov.i32 q9, #0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xeec8ba27 // vdiv.f32 s23, s16, s15
- .long 0xee88ba07 // vdiv.f32 s22, s16, s14
- .long 0xeec8aa26 // vdiv.f32 s21, s16, s13
- .long 0xee88aa06 // vdiv.f32 s20, s16, s12
- .long 0xf3600eca // vcgt.f32 q8, q8, q5
- .long 0xf35a0172 // vbsl q8, q5, q9
- .long 0xf3000dd0 // vmul.f32 q0, q8, q0
- .long 0xf3002dd2 // vmul.f32 q1, q8, q1
- .long 0xf3004dd4 // vmul.f32 q2, q8, q2
- .long 0xecbd8b02 // vpop {d8}
- .long 0xecbdab04 // vpop {d10-d11}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x7f800000 // .word 0x7f800000
- .long 0x7f800000 // .word 0x7f800000
- .long 0x7f800000 // .word 0x7f800000
- .long 0x7f800000 // .word 0x7f800000
-
-HIDDEN _sk_from_srgb_vfp4
-.globl _sk_from_srgb_vfp4
-FUNCTION(_sk_from_srgb_vfp4)
-_sk_from_srgb_vfp4:
- .long 0xed2d8b04 // vpush {d8-d9}
- .long 0xe28f2094 // add r2, pc, #148
- .long 0xf3408d50 // vmul.f32 q12, q0, q0
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28f2098 // add r2, pc, #152
- .long 0xf342ad52 // vmul.f32 q13, q1, q1
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f209c // add r2, pc, #156
- .long 0xf26621f6 // vorr q9, q11, q11
- .long 0xf26641f6 // vorr q10, q11, q11
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf2402c70 // vfma.f32 q9, q0, q8
- .long 0xe28f2098 // add r2, pc, #152
- .long 0xf2424c70 // vfma.f32 q10, q1, q8
- .long 0xf26ce1fc // vorr q15, q14, q14
- .long 0xf2446c70 // vfma.f32 q11, q2, q8
- .long 0xf22c81fc // vorr q4, q14, q14
- .long 0xf248ecf2 // vfma.f32 q15, q12, q9
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f208c // add r2, pc, #140
- .long 0xf20a8cf4 // vfma.f32 q4, q13, q10
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf3680ec2 // vcgt.f32 q8, q12, q1
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3022d7a // vmul.f32 q1, q1, q13
- .long 0xf3682ec4 // vcgt.f32 q9, q12, q2
- .long 0xf3684ec0 // vcgt.f32 q10, q12, q0
- .long 0xf3448d7a // vmul.f32 q12, q2, q13
- .long 0xf340ad7a // vmul.f32 q13, q0, q13
- .long 0xf3040d54 // vmul.f32 q0, q2, q2
- .long 0xf3520158 // vbsl q8, q1, q4
- .long 0xf35a41fe // vbsl q10, q13, q15
- .long 0xf240cc76 // vfma.f32 q14, q0, q11
- .long 0xf35821fc // vbsl q9, q12, q14
- .long 0xf22401f4 // vorr q0, q10, q10
- .long 0xf22021f0 // vorr q1, q8, q8
- .long 0xf22241f2 // vorr q2, q9, q9
- .long 0xecbd8b04 // vpop {d8-d9}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d9e8391 // .word 0x3d9e8391
- .long 0x3d9e8391 // .word 0x3d9e8391
- .long 0x3d9e8391 // .word 0x3d9e8391
- .long 0x3d9e8391 // .word 0x3d9e8391
-
-HIDDEN _sk_from_srgb_dst_vfp4
-.globl _sk_from_srgb_dst_vfp4
-FUNCTION(_sk_from_srgb_dst_vfp4)
-_sk_from_srgb_dst_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe28f20b0 // add r2, pc, #176
- .long 0xe280c010 // add ip, r0, #16
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f20b4 // add r2, pc, #180
- .long 0xe280e020 // add lr, r0, #32
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf26061f0 // vorr q11, q8, q8
- .long 0xf46c4acf // vld1.64 {d20-d21}, [ip]
- .long 0xf260a1f0 // vorr q13, q8, q8
- .long 0xf2446cf2 // vfma.f32 q11, q10, q9
- .long 0xf46e8acf // vld1.64 {d24-d25}, [lr]
- .long 0xf248acf2 // vfma.f32 q13, q12, q9
- .long 0xf462eacf // vld1.64 {d30-d31}, [r2]
- .long 0xe28f3098 // add r3, pc, #152
- .long 0xf344cdf4 // vmul.f32 q14, q10, q10
- .long 0xf3088df8 // vmul.f32 q4, q12, q12
- .long 0xf24e0cf2 // vfma.f32 q8, q15, q9
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe28f3094 // add r3, pc, #148
- .long 0xf222a1f2 // vorr q5, q9, q9
- .long 0xf20cacf6 // vfma.f32 q5, q14, q11
- .long 0xf4636acf // vld1.64 {d22-d23}, [r3]
- .long 0xe28f3094 // add r3, pc, #148
- .long 0xf262c1f2 // vorr q14, q9, q9
- .long 0xf248cc7a // vfma.f32 q14, q4, q13
- .long 0xf463aacf // vld1.64 {d26-d27}, [r3]
- .long 0xf3268ee8 // vcgt.f32 q4, q11, q12
- .long 0xf3488dfa // vmul.f32 q12, q12, q13
- .long 0xf326ceee // vcgt.f32 q6, q11, q15
- .long 0xf3666ee4 // vcgt.f32 q11, q11, q10
- .long 0xf3444dfa // vmul.f32 q10, q10, q13
- .long 0xf30eedfa // vmul.f32 q7, q15, q13
- .long 0xf34eadfe // vmul.f32 q13, q15, q15
- .long 0xf31881fc // vbsl q4, q12, q14
- .long 0xf35461da // vbsl q11, q10, q5
- .long 0xf24a2cf0 // vfma.f32 q9, q13, q8
- .long 0xf31ec172 // vbsl q6, q7, q9
- .long 0xf44c6acf // vst1.64 {d22-d23}, [ip]
- .long 0xf40e8acf // vst1.64 {d8-d9}, [lr]
- .long 0xf402cacf // vst1.64 {d12-d13}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3e99999a // .word 0x3e99999a
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3f328f5c // .word 0x3f328f5c
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3b23d70a // .word 0x3b23d70a
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d6147ae // .word 0x3d6147ae
- .long 0x3d9e8391 // .word 0x3d9e8391
- .long 0x3d9e8391 // .word 0x3d9e8391
- .long 0x3d9e8391 // .word 0x3d9e8391
- .long 0x3d9e8391 // .word 0x3d9e8391
-
-HIDDEN _sk_to_srgb_vfp4
-.globl _sk_to_srgb_vfp4
-FUNCTION(_sk_to_srgb_vfp4)
-_sk_to_srgb_vfp4:
- .long 0xed2d8b08 // vpush {d8-d11}
- .long 0xf3fb05c0 // vrsqrte.f32 q8, q0
- .long 0xe28f20f8 // add r2, pc, #248
- .long 0xf3402df0 // vmul.f32 q9, q8, q8
- .long 0xf2602f72 // vrsqrts.f32 q9, q0, q9
- .long 0xf3400df2 // vmul.f32 q8, q8, q9
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f20f4 // add r2, pc, #244
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20fc // add r2, pc, #252
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf26ac1fa // vorr q14, q13, q13
- .long 0xf240ccf8 // vfma.f32 q14, q8, q12
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf22681f6 // vorr q4, q11, q11
- .long 0xf2404de2 // vadd.f32 q10, q8, q9
- .long 0xf3fbe564 // vrecpe.f32 q15, q10
- .long 0xf2008cfc // vfma.f32 q4, q8, q14
- .long 0xf3fb05c2 // vrsqrte.f32 q8, q1
- .long 0xf2444ffe // vrecps.f32 q10, q10, q15
- .long 0xf340cdf0 // vmul.f32 q14, q8, q8
- .long 0xf262cf7c // vrsqrts.f32 q14, q1, q14
- .long 0xf34e4df4 // vmul.f32 q10, q15, q10
- .long 0xf266e1f6 // vorr q15, q11, q11
- .long 0xf3400dfc // vmul.f32 q8, q8, q14
- .long 0xf26ac1fa // vorr q14, q13, q13
- .long 0xf240ccf8 // vfma.f32 q14, q8, q12
- .long 0xf240ecfc // vfma.f32 q15, q8, q14
- .long 0xf2400de2 // vadd.f32 q8, q8, q9
- .long 0xf3fbc560 // vrecpe.f32 q14, q8
- .long 0xf2400ffc // vrecps.f32 q8, q8, q14
- .long 0xf34c0df0 // vmul.f32 q8, q14, q8
- .long 0xf3fbc5c4 // vrsqrte.f32 q14, q2
- .long 0xf30cadfc // vmul.f32 q5, q14, q14
- .long 0xf224af5a // vrsqrts.f32 q5, q2, q5
- .long 0xf34ccdda // vmul.f32 q14, q14, q5
- .long 0xf24c2de2 // vadd.f32 q9, q14, q9
- .long 0xf24cacf8 // vfma.f32 q13, q14, q12
- .long 0xf3fb8562 // vrecpe.f32 q12, q9
- .long 0xf2422ff8 // vrecps.f32 q9, q9, q12
- .long 0xf24c6cfa // vfma.f32 q11, q14, q13
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe28f20a0 // add r2, pc, #160
- .long 0xf34ecdf0 // vmul.f32 q14, q15, q8
- .long 0xf348ed74 // vmul.f32 q15, q4, q10
- .long 0xf4228acf // vld1.64 {d8-d9}, [r2]
- .long 0xf36a0ec4 // vcgt.f32 q8, q13, q2
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3044d58 // vmul.f32 q2, q2, q4
- .long 0xf36a4ec0 // vcgt.f32 q10, q13, q0
- .long 0xf3488df2 // vmul.f32 q12, q12, q9
- .long 0xf36a2ec2 // vcgt.f32 q9, q13, q1
- .long 0xf3022d58 // vmul.f32 q1, q1, q4
- .long 0xf340ad58 // vmul.f32 q13, q0, q4
- .long 0xf3466df8 // vmul.f32 q11, q11, q12
- .long 0xf3540176 // vbsl q8, q2, q11
- .long 0xf352217c // vbsl q9, q1, q14
- .long 0xf35a41fe // vbsl q10, q13, q15
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xf22401f4 // vorr q0, q10, q10
- .long 0xf22041f0 // vorr q2, q8, q8
- .long 0xecbd8b08 // vpop {d8-d11}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3e10c64c // .word 0x3e10c64c
- .long 0x3e10c64c // .word 0x3e10c64c
- .long 0x3e10c64c // .word 0x3e10c64c
- .long 0x3e10c64c // .word 0x3e10c64c
- .long 0xbb20d739 // .word 0xbb20d739
- .long 0xbb20d739 // .word 0xbb20d739
- .long 0xbb20d739 // .word 0xbb20d739
- .long 0xbb20d739 // .word 0xbb20d739
- .long 0x3c629fba // .word 0x3c629fba
- .long 0x3c629fba // .word 0x3c629fba
- .long 0x3c629fba // .word 0x3c629fba
- .long 0x3c629fba // .word 0x3c629fba
- .long 0x3f90a3d7 // .word 0x3f90a3d7
- .long 0x3f90a3d7 // .word 0x3f90a3d7
- .long 0x3f90a3d7 // .word 0x3f90a3d7
- .long 0x3f90a3d7 // .word 0x3f90a3d7
- .long 0x3b98b1a8 // .word 0x3b98b1a8
- .long 0x3b98b1a8 // .word 0x3b98b1a8
- .long 0x3b98b1a8 // .word 0x3b98b1a8
- .long 0x3b98b1a8 // .word 0x3b98b1a8
- .long 0x414eb852 // .word 0x414eb852
- .long 0x414eb852 // .word 0x414eb852
- .long 0x414eb852 // .word 0x414eb852
- .long 0x414eb852 // .word 0x414eb852
-
-HIDDEN _sk_rgb_to_hsl_vfp4
-.globl _sk_rgb_to_hsl_vfp4
-FUNCTION(_sk_rgb_to_hsl_vfp4)
-_sk_rgb_to_hsl_vfp4:
- .long 0xed2d8b0c // vpush {d8-d13}
- .long 0xf2620f44 // vmin.f32 q8, q1, q2
- .long 0xe28f20b8 // add r2, pc, #184
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20c0 // add r2, pc, #192
- .long 0xf2422f44 // vmax.f32 q9, q1, q2
- .long 0xeeb7ca00 // vmov.f32 s24, #112
- .long 0xf2600f60 // vmin.f32 q8, q0, q8
- .long 0xf2404f62 // vmax.f32 q10, q0, q9
- .long 0xf3646e42 // vcgt.f32 q11, q2, q1
- .long 0xf2c02050 // vmov.i32 q9, #0
- .long 0xf2248de0 // vsub.f32 q4, q10, q8
- .long 0xf35861f2 // vbsl q11, q12, q9
- .long 0xf2628d44 // vsub.f32 q12, q1, q2
- .long 0xeeccba29 // vdiv.f32 s23, s24, s19
- .long 0xee8cba09 // vdiv.f32 s22, s24, s18
- .long 0xeeccaa28 // vdiv.f32 s21, s24, s17
- .long 0xee8caa08 // vdiv.f32 s20, s24, s16
- .long 0xf2486cda // vfma.f32 q11, q12, q5
- .long 0xf2648d40 // vsub.f32 q12, q2, q0
- .long 0xf2c4a650 // vmov.i32 q13, #1073741824
- .long 0xf2c1ef50 // vmov.f32 q15, #4
- .long 0xf26acde4 // vsub.f32 q14, q13, q10
- .long 0xf248acda // vfma.f32 q13, q12, q5
- .long 0xf2608d42 // vsub.f32 q12, q0, q1
- .long 0xf248ecda // vfma.f32 q15, q12, q5
- .long 0xf26c8de0 // vsub.f32 q12, q14, q8
- .long 0xf244cde0 // vadd.f32 q14, q10, q8
- .long 0xf283a65f // vmov.i32 q5, #1056964608
- .long 0xf2440ee0 // vceq.f32 q8, q10, q8
- .long 0xf30c4dda // vmul.f32 q2, q14, q5
- .long 0xf324ce4a // vcgt.f32 q6, q2, q5
- .long 0xf318c1fc // vbsl q6, q12, q14
- .long 0xf2448ec0 // vceq.f32 q12, q10, q0
- .long 0xeec9baad // vdiv.f32 s23, s19, s27
- .long 0xee89ba0d // vdiv.f32 s22, s18, s26
- .long 0xeec8aaac // vdiv.f32 s21, s17, s25
- .long 0xee88aa0c // vdiv.f32 s20, s16, s24
- .long 0xf2444ec2 // vceq.f32 q10, q10, q1
- .long 0xf35a41fe // vbsl q10, q13, q15
- .long 0xf35681f4 // vbsl q12, q11, q10
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf26041f0 // vorr q10, q8, q8
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf35201da // vbsl q8, q9, q5
- .long 0xf35241f8 // vbsl q10, q9, q12
- .long 0xf22021f0 // vorr q1, q8, q8
- .long 0xf3040df6 // vmul.f32 q0, q10, q11
- .long 0xecbd8b0c // vpop {d8-d13}
- .long 0xe12fff12 // bx r2
- .long 0x40c00000 // .word 0x40c00000
- .long 0x40c00000 // .word 0x40c00000
- .long 0x40c00000 // .word 0x40c00000
- .long 0x40c00000 // .word 0x40c00000
- .long 0x3e2aaaab // .word 0x3e2aaaab
- .long 0x3e2aaaab // .word 0x3e2aaaab
- .long 0x3e2aaaab // .word 0x3e2aaaab
- .long 0x3e2aaaab // .word 0x3e2aaaab
-
-HIDDEN _sk_hsl_to_rgb_vfp4
-.globl _sk_hsl_to_rgb_vfp4
-FUNCTION(_sk_hsl_to_rgb_vfp4)
-_sk_hsl_to_rgb_vfp4:
- .long 0xe92d0030 // push {r4, r5}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd028 // sub sp, sp, #40
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xf3420d54 // vmul.f32 q8, q1, q2
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xe28d3010 // add r3, sp, #16
- .long 0xec826b04 // vstmia r2, {d6-d7}
- .long 0xf281cf50 // vmov.f32 q6, #4
- .long 0xf280a050 // vmov.i32 q5, #0
- .long 0xec8d2b04 // vstmia sp, {d2-d3}
- .long 0xe28f2f5f // add r2, pc, #380
- .long 0xf2626d60 // vsub.f32 q11, q1, q8
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f2d06 // add r2, pc, #384
- .long 0xf240ad62 // vadd.f32 q13, q0, q9
- .long 0xf4228acf // vld1.64 {d8-d9}, [r2]
- .long 0xe28f2f61 // add r2, pc, #388
- .long 0xf3442e64 // vcge.f32 q9, q2, q10
- .long 0xf422eacf // vld1.64 {d14-d15}, [r2]
- .long 0xe28f2f62 // add r2, pc, #392
- .long 0xf3fb876a // vcvt.s32.f32 q12, q13
- .long 0xf35621f0 // vbsl q9, q11, q8
- .long 0xf2446d44 // vadd.f32 q11, q2, q2
- .long 0xf3fb0668 // vcvt.f32.s32 q8, q12
- .long 0xf2422dc4 // vadd.f32 q9, q9, q2
- .long 0xf3608eea // vcgt.f32 q12, q8, q13
- .long 0xf2664de2 // vsub.f32 q10, q11, q9
- .long 0xf2c06050 // vmov.i32 q11, #0
- .long 0xf3588176 // vbsl q12, q4, q11
- .long 0xf262ede4 // vsub.f32 q15, q9, q10
- .long 0xf2600de8 // vsub.f32 q8, q8, q12
- .long 0xf2c16f50 // vmov.f32 q11, #4
- .long 0xf22421f4 // vorr q1, q10, q10
- .long 0xf26a8de0 // vsub.f32 q12, q13, q8
- .long 0xf2c10f58 // vmov.f32 q8, #6
- .long 0xf264a1f4 // vorr q13, q10, q10
- .long 0xf3480df0 // vmul.f32 q8, q12, q8
- .long 0xf20e2cf0 // vfma.f32 q1, q15, q8
- .long 0xf2660de0 // vsub.f32 q8, q11, q8
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf24eacf0 // vfma.f32 q13, q15, q8
- .long 0xf3480ece // vcge.f32 q8, q12, q7
- .long 0xf35401fa // vbsl q8, q10, q13
- .long 0xf348aee6 // vcge.f32 q13, q12, q11
- .long 0xf2c06050 // vmov.i32 q11, #0
- .long 0xf350a1f2 // vbsl q13, q8, q9
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28f2f4a // add r2, pc, #296
- .long 0xf2400d60 // vadd.f32 q8, q0, q8
- .long 0xf3bb6760 // vcvt.s32.f32 q3, q8
- .long 0xf3bb6646 // vcvt.f32.s32 q3, q3
- .long 0xf366ce60 // vcgt.f32 q14, q3, q8
- .long 0xf358c176 // vbsl q14, q4, q11
- .long 0xf2c16f58 // vmov.f32 q11, #6
- .long 0xf266cd6c // vsub.f32 q14, q3, q14
- .long 0xf2600dec // vsub.f32 q8, q8, q14
- .long 0xf340cdf6 // vmul.f32 q14, q8, q11
- .long 0xf26461f4 // vorr q11, q10, q10
- .long 0xf22c6d6c // vsub.f32 q3, q6, q14
- .long 0xf24e6cd6 // vfma.f32 q11, q15, q3
- .long 0xf3006ece // vcge.f32 q3, q8, q7
- .long 0xf31461f6 // vbsl q3, q10, q11
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf3406ee6 // vcge.f32 q11, q8, q11
- .long 0xf3566172 // vbsl q11, q3, q9
- .long 0xf22461f4 // vorr q3, q10, q10
- .long 0xf20e6cfc // vfma.f32 q3, q15, q14
- .long 0xf3fbc740 // vcvt.s32.f32 q14, q0
- .long 0xf3fbc66c // vcvt.f32.s32 q14, q14
- .long 0xf32ccec0 // vcgt.f32 q6, q14, q0
- .long 0xf318c15a // vbsl q6, q4, q5
- .long 0xf22481f4 // vorr q4, q10, q10
- .long 0xf26ccdcc // vsub.f32 q14, q14, q6
- .long 0xf281cf50 // vmov.f32 q6, #4
- .long 0xf260cd6c // vsub.f32 q14, q0, q14
- .long 0xf2810f58 // vmov.f32 q0, #6
- .long 0xf30c0dd0 // vmul.f32 q0, q14, q0
- .long 0xf20e8cd0 // vfma.f32 q4, q15, q0
- .long 0xf22c0d40 // vsub.f32 q0, q6, q0
- .long 0xf224c1f4 // vorr q6, q10, q10
- .long 0xf20eccd0 // vfma.f32 q6, q15, q0
- .long 0xf34ceece // vcge.f32 q15, q14, q7
- .long 0xf354e1dc // vbsl q15, q10, q6
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf34c4ee4 // vcge.f32 q10, q14, q10
- .long 0xf35e41f2 // vbsl q10, q15, q9
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf3488ee2 // vcge.f32 q12, q12, q9
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf340eee2 // vcge.f32 q15, q8, q9
- .long 0xecdd0b04 // vldmia sp, {d16-d17}
- .long 0xf34c2ee2 // vcge.f32 q9, q14, q9
- .long 0xf35a81d2 // vbsl q12, q13, q1
- .long 0xf3f90560 // vceq.f32 q8, q8, #0
- .long 0xf22021f0 // vorr q1, q8, q8
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf3540178 // vbsl q8, q2, q12
- .long 0xf356e1d6 // vbsl q15, q11, q3
- .long 0xec936b04 // vldmia r3, {d6-d7}
- .long 0xf35421d8 // vbsl q9, q10, q4
- .long 0xf3142172 // vbsl q1, q2, q9
- .long 0xf314017e // vbsl q0, q2, q15
- .long 0xf22041f0 // vorr q2, q8, q8
- .long 0xe28dd028 // add sp, sp, #40
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd0030 // pop {r4, r5}
- .long 0xe12fff12 // bx r2
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f2aaaab // .word 0x3f2aaaab
- .long 0x3f2aaaab // .word 0x3f2aaaab
- .long 0x3f2aaaab // .word 0x3f2aaaab
- .long 0x3f2aaaab // .word 0x3f2aaaab
- .long 0x3eaaaaab // .word 0x3eaaaaab
- .long 0x3eaaaaab // .word 0x3eaaaaab
- .long 0x3eaaaaab // .word 0x3eaaaaab
- .long 0x3eaaaaab // .word 0x3eaaaaab
- .long 0x3e2aaaab // .word 0x3e2aaaab
- .long 0x3e2aaaab // .word 0x3e2aaaab
- .long 0x3e2aaaab // .word 0x3e2aaaab
- .long 0x3e2aaaab // .word 0x3e2aaaab
-
-HIDDEN _sk_scale_1_float_vfp4
-.globl _sk_scale_1_float_vfp4
-FUNCTION(_sk_scale_1_float_vfp4)
-_sk_scale_1_float_vfp4:
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf4e30cbf // vld1.32 {d16[]-d17[]}, [r3 :32]
- .long 0xf3000dd0 // vmul.f32 q0, q8, q0
- .long 0xf3002dd2 // vmul.f32 q1, q8, q1
- .long 0xf3004dd4 // vmul.f32 q2, q8, q2
- .long 0xf3006dd6 // vmul.f32 q3, q8, q3
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
-
-HIDDEN _sk_scale_u8_vfp4
-.globl _sk_scale_u8_vfp4
-FUNCTION(_sk_scale_u8_vfp4)
-_sk_scale_u8_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe24dd008 // sub sp, sp, #8
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0224392 // mla r2, r2, r3, r4
- .long 0xe082200e // add r2, r2, lr
- .long 0x1a000013 // bne 263c <sk_scale_u8_vfp4+0x7c>
- .long 0xe5922000 // ldr r2, [r2]
- .long 0xe58d2000 // str r2, [sp]
- .long 0xe1a0200d // mov r2, sp
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xf3c80a30 // vmovl.u8 q8, d16
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xe28f209c // add r2, pc, #156
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3400df2 // vmul.f32 q8, q8, q9
- .long 0xf3000dd0 // vmul.f32 q0, q8, q0
- .long 0xf3002dd2 // vmul.f32 q1, q8, q1
- .long 0xf3004dd4 // vmul.f32 q2, q8, q2
- .long 0xf3006dd6 // vmul.f32 q3, q8, q3
- .long 0xe28dd008 // add sp, sp, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a000012 // beq 2694 <sk_scale_u8_vfp4+0xd4>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000005 // beq 266c <sk_scale_u8_vfp4+0xac>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffe8 // bne 2600 <sk_scale_u8_vfp4+0x40>
- .long 0xe3a04000 // mov r4, #0
- .long 0xe5d23002 // ldrb r3, [r2, #2]
- .long 0xee804bb0 // vdup.16 d16, r4
- .long 0xee203bb0 // vmov.16 d16[2], r3
- .long 0xe1d220b0 // ldrh r2, [r2]
- .long 0xe1cd20b4 // strh r2, [sp, #4]
- .long 0xe28d2004 // add r2, sp, #4
- .long 0xf4e2241f // vld1.16 {d18[0]}, [r2 :16]
- .long 0xf3c82a32 // vmovl.u8 q9, d18
- .long 0xf3d02a32 // vmovl.u16 q9, d18
- .long 0xf3f62124 // vuzp.16 d18, d20
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffda // b 2600 <sk_scale_u8_vfp4+0x40>
- .long 0xe3a03000 // mov r3, #0
- .long 0xe5d22000 // ldrb r2, [r2]
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xee002bb0 // vmov.16 d16[0], r2
- .long 0xeaffffd5 // b 2600 <sk_scale_u8_vfp4+0x40>
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_scale_565_vfp4
-.globl _sk_scale_565_vfp4
-FUNCTION(_sk_scale_565_vfp4)
-_sk_scale_565_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe590c000 // ldr ip, [r0]
- .long 0xe9904004 // ldmib r0, {r2, lr}
- .long 0xe5934000 // ldr r4, [r3]
- .long 0xe5933004 // ldr r3, [r3, #4]
- .long 0xe35e0000 // cmp lr, #0
- .long 0xe0020293 // mul r2, r3, r2
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xe082308c // add r3, r2, ip, lsl #1
- .long 0xe280c040 // add ip, r0, #64
- .long 0x1a000024 // bne 2780 <sk_scale_565_vfp4+0xc8>
- .long 0xf463074f // vld1.16 {d16}, [r3]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe3a02e7e // mov r2, #2016
- .long 0xf2c1205f // vmov.i32 q9, #31
- .long 0xeea42b90 // vdup.32 q10, r2
- .long 0xe28f20e0 // add r2, pc, #224
- .long 0xf3c76258 // vmov.i32 q11, #63488
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xe28f20dc // add r2, pc, #220
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe28f20e0 // add r2, pc, #224
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf24001f6 // vand q8, q8, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf3422df8 // vmul.f32 q9, q9, q12
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3444dfa // vmul.f32 q10, q10, q13
- .long 0xf3024dd4 // vmul.f32 q2, q9, q2
- .long 0xf3400df6 // vmul.f32 q8, q8, q11
- .long 0xf46c6acf // vld1.64 {d22-d23}, [ip]
- .long 0xf3666ec6 // vcgt.f32 q11, q11, q3
- .long 0xf2648fe2 // vmin.f32 q12, q10, q9
- .long 0xf244afe2 // vmax.f32 q13, q10, q9
- .long 0xf3000dd0 // vmul.f32 q0, q8, q0
- .long 0xf2608fe8 // vmin.f32 q12, q8, q12
- .long 0xf240afea // vmax.f32 q13, q8, q13
- .long 0xf3042dd2 // vmul.f32 q1, q10, q1
- .long 0xf35861fa // vbsl q11, q12, q13
- .long 0xf3066dd6 // vmul.f32 q3, q11, q3
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20e2003 // and r2, lr, #3
- .long 0xe3520001 // cmp r2, #1
- .long 0x0a000011 // beq 27d4 <sk_scale_565_vfp4+0x11c>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3520002 // cmp r2, #2
- .long 0x0a000005 // beq 27b0 <sk_scale_565_vfp4+0xf8>
- .long 0xe3520003 // cmp r2, #3
- .long 0x1affffd3 // bne 26f0 <sk_scale_565_vfp4+0x38>
- .long 0xe3a02000 // mov r2, #0
- .long 0xee802bb0 // vdup.16 d16, r2
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf4e2049f // vld1.16 {d16[2]}, [r2 :16]
- .long 0xe5932000 // ldr r2, [r3]
- .long 0xe58d2000 // str r2, [sp]
- .long 0xe1a0200d // mov r2, sp
- .long 0xf4e2183f // vld1.32 {d17[0]}, [r2 :32]
- .long 0xf3d02a31 // vmovl.u16 q9, d17
- .long 0xf3f62121 // vuzp.16 d18, d17
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffc6 // b 26f0 <sk_scale_565_vfp4+0x38>
- .long 0xe3a02000 // mov r2, #0
- .long 0xee802bb0 // vdup.16 d16, r2
- .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
- .long 0xeaffffc2 // b 26f0 <sk_scale_565_vfp4+0x38>
- .long 0xe320f000 // nop {0}
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
-
-HIDDEN _sk_lerp_1_float_vfp4
-.globl _sk_lerp_1_float_vfp4
-FUNCTION(_sk_lerp_1_float_vfp4)
-_sk_lerp_1_float_vfp4:
- .long 0xe2802030 // add r2, r0, #48
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe2802010 // add r2, r0, #16
- .long 0xf2648d60 // vsub.f32 q12, q2, q8
- .long 0xf4e3ecbf // vld1.32 {d30[]-d31[]}, [r3 :32]
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2802020 // add r2, r0, #32
- .long 0xf260ad62 // vsub.f32 q13, q0, q9
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe2802040 // add r2, r0, #64
- .long 0xf262cd64 // vsub.f32 q14, q1, q10
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf2260d66 // vsub.f32 q0, q3, q11
- .long 0xf2480cfe // vfma.f32 q8, q12, q15
- .long 0xf24c4cfe // vfma.f32 q10, q14, q15
- .long 0xf2406c7e // vfma.f32 q11, q0, q15
- .long 0xf24a2cfe // vfma.f32 q9, q13, q15
- .long 0xf22041f0 // vorr q2, q8, q8
- .long 0xf22421f4 // vorr q1, q10, q10
- .long 0xf22661f6 // vorr q3, q11, q11
- .long 0xf22201f2 // vorr q0, q9, q9
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_lerp_u8_vfp4
-.globl _sk_lerp_u8_vfp4
-FUNCTION(_sk_lerp_u8_vfp4)
-_sk_lerp_u8_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe24dd008 // sub sp, sp, #8
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0225492 // mla r2, r2, r4, r5
- .long 0xe0824003 // add r4, r2, r3
- .long 0xe2803020 // add r3, r0, #32
- .long 0xe2802010 // add r2, r0, #16
- .long 0x1a00001f // bne 2930 <sk_lerp_u8_vfp4+0xb8>
- .long 0xe5944000 // ldr r4, [r4]
- .long 0xe58d4000 // str r4, [sp]
- .long 0xe1a0400d // mov r4, sp
- .long 0xf4e4083f // vld1.32 {d16[0]}, [r4 :32]
- .long 0xf3c80a30 // vmovl.u8 q8, d16
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xf262cd64 // vsub.f32 q14, q1, q10
- .long 0xf3d02a30 // vmovl.u16 q9, d16
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xf2608d60 // vsub.f32 q12, q0, q8
- .long 0xf3fb66e2 // vcvt.f32.u32 q11, q9
- .long 0xf46e2acf // vld1.64 {d18-d19}, [lr]
- .long 0xe28f20b4 // add r2, pc, #180
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf264ed62 // vsub.f32 q15, q2, q9
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf346adfa // vmul.f32 q13, q11, q13
- .long 0xf46c6acf // vld1.64 {d22-d23}, [ip]
- .long 0xf2260d66 // vsub.f32 q0, q3, q11
- .long 0xf24c4cfa // vfma.f32 q10, q14, q13
- .long 0xf24e2cfa // vfma.f32 q9, q15, q13
- .long 0xf2406c7a // vfma.f32 q11, q0, q13
- .long 0xf2480cfa // vfma.f32 q8, q12, q13
- .long 0xf22421f4 // vorr q1, q10, q10
- .long 0xf22241f2 // vorr q2, q9, q9
- .long 0xf22661f6 // vorr q3, q11, q11
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xe28dd008 // add sp, sp, #8
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe2065003 // and r5, r6, #3
- .long 0xe3550001 // cmp r5, #1
- .long 0x0a000012 // beq 2988 <sk_lerp_u8_vfp4+0x110>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3550002 // cmp r5, #2
- .long 0x0a000005 // beq 2960 <sk_lerp_u8_vfp4+0xe8>
- .long 0xe3550003 // cmp r5, #3
- .long 0x1affffdc // bne 28c4 <sk_lerp_u8_vfp4+0x4c>
- .long 0xe3a06000 // mov r6, #0
- .long 0xe5d45002 // ldrb r5, [r4, #2]
- .long 0xee806bb0 // vdup.16 d16, r6
- .long 0xee205bb0 // vmov.16 d16[2], r5
- .long 0xe1d440b0 // ldrh r4, [r4]
- .long 0xe1cd40b4 // strh r4, [sp, #4]
- .long 0xe28d4004 // add r4, sp, #4
- .long 0xf4e4241f // vld1.16 {d18[0]}, [r4 :16]
- .long 0xf3c82a32 // vmovl.u8 q9, d18
- .long 0xf3d02a32 // vmovl.u16 q9, d18
- .long 0xf3f62124 // vuzp.16 d18, d20
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffce // b 28c4 <sk_lerp_u8_vfp4+0x4c>
- .long 0xe3a05000 // mov r5, #0
- .long 0xe5d44000 // ldrb r4, [r4]
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xee004bb0 // vmov.16 d16[0], r4
- .long 0xeaffffc9 // b 28c4 <sk_lerp_u8_vfp4+0x4c>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_lerp_565_vfp4
-.globl _sk_lerp_565_vfp4
-FUNCTION(_sk_lerp_565_vfp4)
-_sk_lerp_565_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280e040 // add lr, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280c020 // add ip, r0, #32
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0020492 // mul r2, r2, r4
- .long 0xe0852082 // add r2, r5, r2, lsl #1
- .long 0xe0824083 // add r4, r2, r3, lsl #1
- .long 0xe2802030 // add r2, r0, #48
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a00002f // bne 2aac <sk_lerp_565_vfp4+0xfc>
- .long 0xf464074f // vld1.16 {d16}, [r4]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe3a04e7e // mov r4, #2016
- .long 0xf2c1205f // vmov.i32 q9, #31
- .long 0xeea44b90 // vdup.32 q10, r4
- .long 0xe28f4f42 // add r4, pc, #264
- .long 0xf3c76258 // vmov.i32 q11, #63488
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf4648acf // vld1.64 {d24-d25}, [r4]
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xe28f4f41 // add r4, pc, #260
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf464aacf // vld1.64 {d26-d27}, [r4]
- .long 0xe28f4f42 // add r4, pc, #264
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf24001f6 // vand q8, q8, q11
- .long 0xf3428df8 // vmul.f32 q12, q9, q12
- .long 0xf4642acf // vld1.64 {d18-d19}, [r4]
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf344adfa // vmul.f32 q13, q10, q13
- .long 0xf3406df2 // vmul.f32 q11, q8, q9
- .long 0xf4630acf // vld1.64 {d16-d17}, [r3]
- .long 0xf260ed60 // vsub.f32 q15, q0, q8
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf26a4fe8 // vmin.f32 q10, q13, q12
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf24acfe8 // vmax.f32 q14, q13, q12
- .long 0xf24e0cf6 // vfma.f32 q8, q15, q11
- .long 0xf2260fe4 // vmin.f32 q0, q11, q10
- .long 0xf46e4acf // vld1.64 {d20-d21}, [lr]
- .long 0xf266ed64 // vsub.f32 q15, q3, q10
- .long 0xf3246ec6 // vcgt.f32 q3, q10, q3
- .long 0xf246cfec // vmax.f32 q14, q11, q14
- .long 0xf46c6acf // vld1.64 {d22-d23}, [ip]
- .long 0xf2244d62 // vsub.f32 q2, q2, q9
- .long 0xf310617c // vbsl q3, q0, q14
- .long 0xf262cd66 // vsub.f32 q14, q1, q11
- .long 0xf2442c78 // vfma.f32 q9, q2, q12
- .long 0xf24e4cd6 // vfma.f32 q10, q15, q3
- .long 0xf24c6cfa // vfma.f32 q11, q14, q13
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22241f2 // vorr q2, q9, q9
- .long 0xf22461f4 // vorr q3, q10, q10
- .long 0xf22621f6 // vorr q1, q11, q11
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe2065003 // and r5, r6, #3
- .long 0xe3550001 // cmp r5, #1
- .long 0x0a000011 // beq 2b00 <sk_lerp_565_vfp4+0x150>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3550002 // cmp r5, #2
- .long 0x0a000005 // beq 2adc <sk_lerp_565_vfp4+0x12c>
- .long 0xe3550003 // cmp r5, #3
- .long 0x1affffc8 // bne 29f0 <sk_lerp_565_vfp4+0x40>
- .long 0xe3a05000 // mov r5, #0
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xe2845004 // add r5, r4, #4
- .long 0xf4e5049f // vld1.16 {d16[2]}, [r5 :16]
- .long 0xe5944000 // ldr r4, [r4]
- .long 0xe58d4000 // str r4, [sp]
- .long 0xe1a0400d // mov r4, sp
- .long 0xf4e4183f // vld1.32 {d17[0]}, [r4 :32]
- .long 0xf3d02a31 // vmovl.u16 q9, d17
- .long 0xf3f62121 // vuzp.16 d18, d17
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffbb // b 29f0 <sk_lerp_565_vfp4+0x40>
- .long 0xe3a05000 // mov r5, #0
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xf4e4041f // vld1.16 {d16[0]}, [r4 :16]
- .long 0xeaffffb7 // b 29f0 <sk_lerp_565_vfp4+0x40>
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
-
-HIDDEN _sk_load_tables_vfp4
-.globl _sk_load_tables_vfp4
-FUNCTION(_sk_load_tables_vfp4)
-_sk_load_tables_vfp4:
- .long 0xe92d4bf0 // push {r4, r5, r6, r7, r8, r9, fp, lr}
- .long 0xe5915000 // ldr r5, [r1]
- .long 0xe5902000 // ldr r2, [r0]
- .long 0xe5903008 // ldr r3, [r0, #8]
- .long 0xe5954000 // ldr r4, [r5]
- .long 0xe3530000 // cmp r3, #0
- .long 0xe084e102 // add lr, r4, r2, lsl #2
- .long 0x1a000036 // bne 2c3c <sk_load_tables_vfp4+0xfc>
- .long 0xf46e0a8f // vld1.32 {d16-d17}, [lr]
- .long 0xf3c7405f // vmov.i32 q10, #255
- .long 0xe5956004 // ldr r6, [r5, #4]
- .long 0xf3f02070 // vshr.u32 q9, q8, #16
- .long 0xe5953008 // ldr r3, [r5, #8]
- .long 0xf24061f4 // vand q11, q8, q10
- .long 0xe595200c // ldr r2, [r5, #12]
- .long 0xf3f8a070 // vshr.u32 q13, q8, #8
- .long 0xe28f7f42 // add r7, pc, #264
- .long 0xf24221f4 // vand q9, q9, q10
- .long 0xf4678acf // vld1.64 {d24-d25}, [r7]
- .long 0xf24a41f4 // vand q10, q13, q10
- .long 0xee374b90 // vmov.32 r4, d23[1]
- .long 0xf3e80070 // vshr.u32 q8, q8, #24
- .long 0xee17eb90 // vmov.32 lr, d23[0]
- .long 0xee368b90 // vmov.32 r8, d22[1]
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xee169b90 // vmov.32 r9, d22[0]
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xee157b90 // vmov.32 r7, d21[0]
- .long 0xee32cb90 // vmov.32 ip, d18[1]
- .long 0xf3006df8 // vmul.f32 q3, q8, q12
- .long 0xe0864104 // add r4, r6, r4, lsl #2
- .long 0xedd41a00 // vldr s3, [r4]
- .long 0xe086410e // add r4, r6, lr, lsl #2
- .long 0xed941a00 // vldr s2, [r4]
- .long 0xe0864108 // add r4, r6, r8, lsl #2
- .long 0xe0866109 // add r6, r6, r9, lsl #2
- .long 0xe0837107 // add r7, r3, r7, lsl #2
- .long 0xedd40a00 // vldr s1, [r4]
- .long 0xe082c10c // add ip, r2, ip, lsl #2
- .long 0xee344b90 // vmov.32 r4, d20[1]
- .long 0xed960a00 // vldr s0, [r6]
- .long 0xe0836105 // add r6, r3, r5, lsl #2
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee146b90 // vmov.32 r6, d20[0]
- .long 0xed973a00 // vldr s6, [r7]
- .long 0xe0837104 // add r7, r3, r4, lsl #2
- .long 0xee134b90 // vmov.32 r4, d19[0]
- .long 0xedd72a00 // vldr s5, [r7]
- .long 0xe0827105 // add r7, r2, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xe0833106 // add r3, r3, r6, lsl #2
- .long 0xedd75a00 // vldr s11, [r7]
- .long 0xed932a00 // vldr s4, [r3]
- .long 0xe0823104 // add r3, r2, r4, lsl #2
- .long 0xed935a00 // vldr s10, [r3]
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xeddc4a00 // vldr s9, [ip]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4bf0 // pop {r4, r5, r6, r7, r8, r9, fp, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe203c003 // and ip, r3, #3
- .long 0xe35c0001 // cmp ip, #1
- .long 0x0a00000c // beq 2c7c <sk_load_tables_vfp4+0x13c>
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe35c0002 // cmp ip, #2
- .long 0x0a000005 // beq 2c6c <sk_load_tables_vfp4+0x12c>
- .long 0xe35c0003 // cmp ip, #3
- .long 0x1affffc1 // bne 2b64 <sk_load_tables_vfp4+0x24>
- .long 0xe3a02000 // mov r2, #0
- .long 0xeea02b90 // vdup.32 q8, r2
- .long 0xe28e2008 // add r2, lr, #8
- .long 0xf4e2183f // vld1.32 {d17[0]}, [r2 :32]
- .long 0xedde2b00 // vldr d18, [lr]
- .long 0xf2f008e2 // vext.8 q8, q8, q9, #8
- .long 0xf2f008e0 // vext.8 q8, q8, q8, #8
- .long 0xeaffffb9 // b 2b64 <sk_load_tables_vfp4+0x24>
- .long 0xe3a02000 // mov r2, #0
- .long 0xeea02b90 // vdup.32 q8, r2
- .long 0xf4ee083f // vld1.32 {d16[0]}, [lr :32]
- .long 0xeaffffb5 // b 2b64 <sk_load_tables_vfp4+0x24>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_load_tables_u16_be_vfp4
-.globl _sk_load_tables_u16_be_vfp4
-FUNCTION(_sk_load_tables_u16_be_vfp4)
-_sk_load_tables_u16_be_vfp4:
- .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
- .long 0xe5918000 // ldr r8, [r1]
- .long 0xe5903000 // ldr r3, [r0]
- .long 0xe590e008 // ldr lr, [r0, #8]
- .long 0xe5982000 // ldr r2, [r8]
- .long 0xe35e0000 // cmp lr, #0
- .long 0xe082c183 // add ip, r2, r3, lsl #3
- .long 0x1a000039 // bne 2da8 <sk_load_tables_u16_be_vfp4+0x108>
- .long 0xf46c004f // vld4.16 {d16-d19}, [ip]
- .long 0xf3c72b3f // vbic.i16 d18, #65280
- .long 0xe5986004 // ldr r6, [r8, #4]
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xe5983008 // ldr r3, [r8, #8]
- .long 0xe598200c // ldr r2, [r8, #12]
- .long 0xe28f40f0 // add r4, pc, #240
- .long 0xf3d04a32 // vmovl.u16 q10, d18
- .long 0xf4646acf // vld1.64 {d22-d23}, [r4]
- .long 0xf3d08a30 // vmovl.u16 q12, d16
- .long 0xf3c71b3f // vbic.i16 d17, #65280
- .long 0xf2d80533 // vshl.s16 d16, d19, #8
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xee397b90 // vmov.32 r7, d25[1]
- .long 0xee198b90 // vmov.32 r8, d25[0]
- .long 0xee34cb90 // vmov.32 ip, d20[1]
- .long 0xe082e105 // add lr, r2, r5, lsl #2
- .long 0xee385b90 // vmov.32 r5, d24[1]
- .long 0xe0864107 // add r4, r6, r7, lsl #2
- .long 0xee187b90 // vmov.32 r7, d24[0]
- .long 0xf3d08a31 // vmovl.u16 q12, d17
- .long 0xedde5a00 // vldr s11, [lr]
- .long 0xedd41a00 // vldr s3, [r4]
- .long 0xe0864108 // add r4, r6, r8, lsl #2
- .long 0xe082c10c // add ip, r2, ip, lsl #2
- .long 0xed941a00 // vldr s2, [r4]
- .long 0xe0864105 // add r4, r6, r5, lsl #2
- .long 0xee395b90 // vmov.32 r5, d25[1]
- .long 0xedd40a00 // vldr s1, [r4]
- .long 0xe0864107 // add r4, r6, r7, lsl #2
- .long 0xee196b90 // vmov.32 r6, d25[0]
- .long 0xed940a00 // vldr s0, [r4]
- .long 0xe0834105 // add r4, r3, r5, lsl #2
- .long 0xee385b90 // vmov.32 r5, d24[1]
- .long 0xedd43a00 // vldr s7, [r4]
- .long 0xe0834106 // add r4, r3, r6, lsl #2
- .long 0xee186b90 // vmov.32 r6, d24[0]
- .long 0xed943a00 // vldr s6, [r4]
- .long 0xe0834105 // add r4, r3, r5, lsl #2
- .long 0xee155b90 // vmov.32 r5, d21[0]
- .long 0xedd42a00 // vldr s5, [r4]
- .long 0xee144b90 // vmov.32 r4, d20[0]
- .long 0xf3d84033 // vshr.u16 d20, d19, #8
- .long 0xe0833106 // add r3, r3, r6, lsl #2
- .long 0xf26001b4 // vorr d16, d16, d20
- .long 0xed932a00 // vldr s4, [r3]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3006df6 // vmul.f32 q3, q8, q11
- .long 0xe0823105 // add r3, r2, r5, lsl #2
- .long 0xed935a00 // vldr s10, [r3]
- .long 0xe0822104 // add r2, r2, r4, lsl #2
- .long 0xeddc4a00 // vldr s9, [ip]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd41f0 // pop {r4, r5, r6, r7, r8, lr}
- .long 0xe12fff12 // bx r2
- .long 0xf4ec070f // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [ip]
- .long 0xe35e0001 // cmp lr, #1
- .long 0x0affffc3 // beq 2cc4 <sk_load_tables_u16_be_vfp4+0x24>
- .long 0xe28c2008 // add r2, ip, #8
- .long 0xe35e0003 // cmp lr, #3
- .long 0xf4e2074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r2]
- .long 0x3affffbf // bcc 2cc4 <sk_load_tables_u16_be_vfp4+0x24>
- .long 0xe28c2010 // add r2, ip, #16
- .long 0xf4e2078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2]
- .long 0xeaffffbc // b 2cc4 <sk_load_tables_u16_be_vfp4+0x24>
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
-
-HIDDEN _sk_load_tables_rgb_u16_be_vfp4
-.globl _sk_load_tables_rgb_u16_be_vfp4
-FUNCTION(_sk_load_tables_rgb_u16_be_vfp4)
-_sk_load_tables_rgb_u16_be_vfp4:
- .long 0xe92d4bf0 // push {r4, r5, r6, r7, r8, r9, fp, lr}
- .long 0xe5903000 // ldr r3, [r0]
- .long 0xe5918000 // ldr r8, [r1]
- .long 0xe590e008 // ldr lr, [r0, #8]
- .long 0xe0833083 // add r3, r3, r3, lsl #1
- .long 0xe5982000 // ldr r2, [r8]
- .long 0xe35e0000 // cmp lr, #0
- .long 0xe082c083 // add ip, r2, r3, lsl #1
- .long 0x1a000033 // bne 2ed4 <sk_load_tables_rgb_u16_be_vfp4+0xf4>
- .long 0xf46c044f // vld3.16 {d16-d18}, [ip]
- .long 0xf3c72b3f // vbic.i16 d18, #65280
- .long 0xe28f60ec // add r6, pc, #236
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xe5987004 // ldr r7, [r8, #4]
- .long 0xe5983008 // ldr r3, [r8, #8]
- .long 0xf3d04a32 // vmovl.u16 q10, d18
- .long 0xe598200c // ldr r2, [r8, #12]
- .long 0xf3d06a30 // vmovl.u16 q11, d16
- .long 0xf4266acf // vld1.64 {d6-d7}, [r6]
- .long 0xf3c71b3f // vbic.i16 d17, #65280
- .long 0xee344b90 // vmov.32 r4, d20[1]
- .long 0xee375b90 // vmov.32 r5, d23[1]
- .long 0xf3d00a31 // vmovl.u16 q8, d17
- .long 0xee17eb90 // vmov.32 lr, d23[0]
- .long 0xee368b90 // vmov.32 r8, d22[1]
- .long 0xee169b90 // vmov.32 r9, d22[0]
- .long 0xe082c104 // add ip, r2, r4, lsl #2
- .long 0xe0874105 // add r4, r7, r5, lsl #2
- .long 0xee115b90 // vmov.32 r5, d17[0]
- .long 0xe087610e // add r6, r7, lr, lsl #2
- .long 0xedd41a00 // vldr s3, [r4]
- .long 0xee314b90 // vmov.32 r4, d17[1]
- .long 0xed961a00 // vldr s2, [r6]
- .long 0xe0876108 // add r6, r7, r8, lsl #2
- .long 0xe0877109 // add r7, r7, r9, lsl #2
- .long 0xedd60a00 // vldr s1, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed970a00 // vldr s0, [r7]
- .long 0xe0837104 // add r7, r3, r4, lsl #2
- .long 0xee354b90 // vmov.32 r4, d21[1]
- .long 0xedd73a00 // vldr s7, [r7]
- .long 0xe0837105 // add r7, r3, r5, lsl #2
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xed973a00 // vldr s6, [r7]
- .long 0xe0837106 // add r7, r3, r6, lsl #2
- .long 0xee156b90 // vmov.32 r6, d21[0]
- .long 0xedd72a00 // vldr s5, [r7]
- .long 0xe0827104 // add r7, r2, r4, lsl #2
- .long 0xee144b90 // vmov.32 r4, d20[0]
- .long 0xedd75a00 // vldr s11, [r7]
- .long 0xe0833105 // add r3, r3, r5, lsl #2
- .long 0xed932a00 // vldr s4, [r3]
- .long 0xe0823106 // add r3, r2, r6, lsl #2
- .long 0xed935a00 // vldr s10, [r3]
- .long 0xeddc4a00 // vldr s9, [ip]
- .long 0xe0822104 // add r2, r2, r4, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4bf0 // pop {r4, r5, r6, r7, r8, r9, fp, lr}
- .long 0xe12fff12 // bx r2
- .long 0xf4ec060f // vld3.16 {d16[0],d17[0],d18[0]}, [ip]
- .long 0xe35e0001 // cmp lr, #1
- .long 0x0affffc9 // beq 2e08 <sk_load_tables_rgb_u16_be_vfp4+0x28>
- .long 0xe28c2006 // add r2, ip, #6
- .long 0xe35e0003 // cmp lr, #3
- .long 0xf4e2064f // vld3.16 {d16[1],d17[1],d18[1]}, [r2]
- .long 0x3affffc5 // bcc 2e08 <sk_load_tables_rgb_u16_be_vfp4+0x28>
- .long 0xe28c200c // add r2, ip, #12
- .long 0xf4e2068f // vld3.16 {d16[2],d17[2],d18[2]}, [r2]
- .long 0xeaffffc2 // b 2e08 <sk_load_tables_rgb_u16_be_vfp4+0x28>
- .long 0xe320f000 // nop {0}
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_byte_tables_vfp4
-.globl _sk_byte_tables_vfp4
-FUNCTION(_sk_byte_tables_vfp4)
-_sk_byte_tables_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe28f2f57 // add r2, pc, #348
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf2400c7a // vfma.f32 q8, q0, q13
- .long 0xe8911004 // ldm r1, {r2, ip}
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2464c7a // vfma.f32 q10, q3, q13
- .long 0xe5926000 // ldr r6, [r2]
- .long 0xe5924004 // ldr r4, [r2, #4]
- .long 0xe5923008 // ldr r3, [r2, #8]
- .long 0xe592e00c // ldr lr, [r2, #12]
- .long 0xf3fb27e0 // vcvt.u32.f32 q9, q8
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2420c7a // vfma.f32 q8, q1, q13
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xf3fb67e0 // vcvt.u32.f32 q11, q8
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2440c7a // vfma.f32 q8, q2, q13
- .long 0xf3fba7e4 // vcvt.u32.f32 q13, q10
- .long 0xf3fb87e0 // vcvt.u32.f32 q12, q8
- .long 0xe7d62005 // ldrb r2, [r6, r5]
- .long 0xee165b90 // vmov.32 r5, d22[0]
- .long 0xee002bb0 // vmov.16 d16[0], r2
- .long 0xe7d42005 // ldrb r2, [r4, r5]
- .long 0xee185b90 // vmov.32 r5, d24[0]
- .long 0xee012bb0 // vmov.16 d17[0], r2
- .long 0xe7d32005 // ldrb r2, [r3, r5]
- .long 0xee1a5b90 // vmov.32 r5, d26[0]
- .long 0xee042bb0 // vmov.16 d20[0], r2
- .long 0xe7de2005 // ldrb r2, [lr, r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xee052bb0 // vmov.16 d21[0], r2
- .long 0xe7d62005 // ldrb r2, [r6, r5]
- .long 0xee365b90 // vmov.32 r5, d22[1]
- .long 0xee002bf0 // vmov.16 d16[1], r2
- .long 0xe7d42005 // ldrb r2, [r4, r5]
- .long 0xee385b90 // vmov.32 r5, d24[1]
- .long 0xee012bf0 // vmov.16 d17[1], r2
- .long 0xe7d32005 // ldrb r2, [r3, r5]
- .long 0xee3a5b90 // vmov.32 r5, d26[1]
- .long 0xee042bf0 // vmov.16 d20[1], r2
- .long 0xe7de2005 // ldrb r2, [lr, r5]
- .long 0xee135b90 // vmov.32 r5, d19[0]
- .long 0xee052bf0 // vmov.16 d21[1], r2
- .long 0xe7d62005 // ldrb r2, [r6, r5]
- .long 0xee175b90 // vmov.32 r5, d23[0]
- .long 0xee202bb0 // vmov.16 d16[2], r2
- .long 0xe7d42005 // ldrb r2, [r4, r5]
- .long 0xee1b5b90 // vmov.32 r5, d27[0]
- .long 0xee212bb0 // vmov.16 d17[2], r2
- .long 0xe7de2005 // ldrb r2, [lr, r5]
- .long 0xee195b90 // vmov.32 r5, d25[0]
- .long 0xee252bb0 // vmov.16 d21[2], r2
- .long 0xee332b90 // vmov.32 r2, d19[1]
- .long 0xe7d35005 // ldrb r5, [r3, r5]
- .long 0xee245bb0 // vmov.16 d20[2], r5
- .long 0xee375b90 // vmov.32 r5, d23[1]
- .long 0xe7d62002 // ldrb r2, [r6, r2]
- .long 0xee3b6b90 // vmov.32 r6, d27[1]
- .long 0xee202bf0 // vmov.16 d16[3], r2
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xf3d02a30 // vmovl.u16 q9, d16
- .long 0xf3fb26e2 // vcvt.f32.u32 q9, q9
- .long 0xe7d44005 // ldrb r4, [r4, r5]
- .long 0xee395b90 // vmov.32 r5, d25[1]
- .long 0xe7de2006 // ldrb r2, [lr, r6]
- .long 0xee214bf0 // vmov.16 d17[3], r4
- .long 0xee252bf0 // vmov.16 d21[3], r2
- .long 0xf3c71b3f // vbic.i16 d17, #65280
- .long 0xf3c75b3f // vbic.i16 d21, #65280
- .long 0xf3d00a31 // vmovl.u16 q8, d17
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xe7d33005 // ldrb r3, [r3, r5]
- .long 0xe28f2044 // add r2, pc, #68
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf3020df8 // vmul.f32 q0, q9, q12
- .long 0xee243bf0 // vmov.16 d20[3], r3
- .long 0xf3002df8 // vmul.f32 q1, q8, q12
- .long 0xf3c74b3f // vbic.i16 d20, #65280
- .long 0xf3d06a34 // vmovl.u16 q11, d20
- .long 0xf3d04a35 // vmovl.u16 q10, d21
- .long 0xf3fb66e6 // vcvt.f32.u32 q11, q11
- .long 0xf3fb46e4 // vcvt.f32.u32 q10, q10
- .long 0xf3064df8 // vmul.f32 q2, q11, q12
- .long 0xf3046df8 // vmul.f32 q3, q10, q12
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_byte_tables_rgb_vfp4
-.globl _sk_byte_tables_rgb_vfp4
-FUNCTION(_sk_byte_tables_rgb_vfp4)
-_sk_byte_tables_rgb_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe8911010 // ldm r1, {r4, ip}
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe5943000 // ldr r3, [r4]
- .long 0xe9944004 // ldmib r4, {r2, lr}
- .long 0xe594400c // ldr r4, [r4, #12]
- .long 0xe2444001 // sub r4, r4, #1
- .long 0xeea04b90 // vdup.32 q8, r4
- .long 0xf3fb4660 // vcvt.f32.s32 q10, q8
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2400c74 // vfma.f32 q8, q0, q10
- .long 0xf2446c74 // vfma.f32 q11, q2, q10
- .long 0xf3fb27e0 // vcvt.u32.f32 q9, q8
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2420c74 // vfma.f32 q8, q1, q10
- .long 0xf3fb47e6 // vcvt.u32.f32 q10, q11
- .long 0xee124b90 // vmov.32 r4, d18[0]
- .long 0xee356b90 // vmov.32 r6, d21[1]
- .long 0xf3fb07e0 // vcvt.u32.f32 q8, q8
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xe7d34004 // ldrb r4, [r3, r4]
- .long 0xee064bb0 // vmov.16 d22[0], r4
- .long 0xe7de6006 // ldrb r6, [lr, r6]
- .long 0xe7d24005 // ldrb r4, [r2, r5]
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xee074bb0 // vmov.16 d23[0], r4
- .long 0xe7de4005 // ldrb r4, [lr, r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xee084bb0 // vmov.16 d24[0], r4
- .long 0xe7d34005 // ldrb r4, [r3, r5]
- .long 0xee305b90 // vmov.32 r5, d16[1]
- .long 0xee064bf0 // vmov.16 d22[1], r4
- .long 0xe7d24005 // ldrb r4, [r2, r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xee074bf0 // vmov.16 d23[1], r4
- .long 0xe7de4005 // ldrb r4, [lr, r5]
- .long 0xee115b90 // vmov.32 r5, d17[0]
- .long 0xee084bf0 // vmov.16 d24[1], r4
- .long 0xe7d24005 // ldrb r4, [r2, r5]
- .long 0xee135b90 // vmov.32 r5, d19[0]
- .long 0xee274bb0 // vmov.16 d23[2], r4
- .long 0xee154b90 // vmov.32 r4, d21[0]
- .long 0xe7d35005 // ldrb r5, [r3, r5]
- .long 0xee265bb0 // vmov.16 d22[2], r5
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xe7de4004 // ldrb r4, [lr, r4]
- .long 0xee284bb0 // vmov.16 d24[2], r4
- .long 0xee286bf0 // vmov.16 d24[3], r6
- .long 0xf3c78b3f // vbic.i16 d24, #65280
- .long 0xf3d04a38 // vmovl.u16 q10, d24
- .long 0xf3fb46e4 // vcvt.f32.u32 q10, q10
- .long 0xe7d33005 // ldrb r3, [r3, r5]
- .long 0xee315b90 // vmov.32 r5, d17[1]
- .long 0xee263bf0 // vmov.16 d22[3], r3
- .long 0xf3c76b3f // vbic.i16 d22, #65280
- .long 0xf3d00a36 // vmovl.u16 q8, d22
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xe7d22005 // ldrb r2, [r2, r5]
- .long 0xee272bf0 // vmov.16 d23[3], r2
- .long 0xe28f2020 // add r2, pc, #32
- .long 0xf3c77b3f // vbic.i16 d23, #65280
- .long 0xf3d02a37 // vmovl.u16 q9, d23
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf3000df6 // vmul.f32 q0, q8, q11
- .long 0xf3fb26e2 // vcvt.f32.u32 q9, q9
- .long 0xf3044df6 // vmul.f32 q2, q10, q11
- .long 0xf3022df6 // vmul.f32 q1, q9, q11
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff1c // bx ip
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_table_r_vfp4
-.globl _sk_table_r_vfp4
-FUNCTION(_sk_table_r_vfp4)
-_sk_table_r_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe893000c // ldm r3, {r2, r3}
- .long 0xe2433001 // sub r3, r3, #1
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf2402c70 // vfma.f32 q9, q0, q8
- .long 0xf3fb07e2 // vcvt.u32.f32 q8, q9
- .long 0xee313b90 // vmov.32 r3, d17[1]
- .long 0xee114b90 // vmov.32 r4, d17[0]
- .long 0xee30eb90 // vmov.32 lr, d16[1]
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xe0823103 // add r3, r2, r3, lsl #2
- .long 0xedd31a00 // vldr s3, [r3]
- .long 0xe0823104 // add r3, r2, r4, lsl #2
- .long 0xe082e10e // add lr, r2, lr, lsl #2
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xed931a00 // vldr s2, [r3]
- .long 0xedde0a00 // vldr s1, [lr]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_table_g_vfp4
-.globl _sk_table_g_vfp4
-FUNCTION(_sk_table_g_vfp4)
-_sk_table_g_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe893000c // ldm r3, {r2, r3}
- .long 0xe2433001 // sub r3, r3, #1
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf2422c70 // vfma.f32 q9, q1, q8
- .long 0xf3fb07e2 // vcvt.u32.f32 q8, q9
- .long 0xee313b90 // vmov.32 r3, d17[1]
- .long 0xee114b90 // vmov.32 r4, d17[0]
- .long 0xee30eb90 // vmov.32 lr, d16[1]
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xe0823103 // add r3, r2, r3, lsl #2
- .long 0xedd33a00 // vldr s7, [r3]
- .long 0xe0823104 // add r3, r2, r4, lsl #2
- .long 0xe082e10e // add lr, r2, lr, lsl #2
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xed933a00 // vldr s6, [r3]
- .long 0xedde2a00 // vldr s5, [lr]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_table_b_vfp4
-.globl _sk_table_b_vfp4
-FUNCTION(_sk_table_b_vfp4)
-_sk_table_b_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe893000c // ldm r3, {r2, r3}
- .long 0xe2433001 // sub r3, r3, #1
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf2442c70 // vfma.f32 q9, q2, q8
- .long 0xf3fb07e2 // vcvt.u32.f32 q8, q9
- .long 0xee313b90 // vmov.32 r3, d17[1]
- .long 0xee114b90 // vmov.32 r4, d17[0]
- .long 0xee30eb90 // vmov.32 lr, d16[1]
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xe0823103 // add r3, r2, r3, lsl #2
- .long 0xedd35a00 // vldr s11, [r3]
- .long 0xe0823104 // add r3, r2, r4, lsl #2
- .long 0xe082e10e // add lr, r2, lr, lsl #2
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xed935a00 // vldr s10, [r3]
- .long 0xedde4a00 // vldr s9, [lr]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_table_a_vfp4
-.globl _sk_table_a_vfp4
-FUNCTION(_sk_table_a_vfp4)
-_sk_table_a_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe893000c // ldm r3, {r2, r3}
- .long 0xe2433001 // sub r3, r3, #1
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf2462c70 // vfma.f32 q9, q3, q8
- .long 0xf3fb07e2 // vcvt.u32.f32 q8, q9
- .long 0xee313b90 // vmov.32 r3, d17[1]
- .long 0xee114b90 // vmov.32 r4, d17[0]
- .long 0xee30eb90 // vmov.32 lr, d16[1]
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xe0823103 // add r3, r2, r3, lsl #2
- .long 0xedd37a00 // vldr s15, [r3]
- .long 0xe0823104 // add r3, r2, r4, lsl #2
- .long 0xe082e10e // add lr, r2, lr, lsl #2
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xed937a00 // vldr s14, [r3]
- .long 0xedde6a00 // vldr s13, [lr]
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_parametric_r_vfp4
-.globl _sk_parametric_r_vfp4
-FUNCTION(_sk_parametric_r_vfp4)
-_sk_parametric_r_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xed2d8b0c // vpush {d8-d13}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0e014 // mov lr, #20
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe2832004 // add r2, r3, #4
- .long 0xed9fca62 // vldr s24, [pc, #392]
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf2402cd0 // vfma.f32 q9, q8, q0
- .long 0xf2c70d5f // vmov.i32 q8, #8388607
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2f43 // add r2, pc, #268
- .long 0xf24201f0 // vand q8, q9, q8
- .long 0xf2c3075f // vorr.i32 q8, #1056964608
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf200ade4 // vadd.f32 q5, q8, q10
- .long 0xf2c34654 // vmov.i32 q10, #872415232
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xeecc9a2b // vdiv.f32 s19, s24, s23
- .long 0xee8c9a0b // vdiv.f32 s18, s24, s22
- .long 0xeecc8a2a // vdiv.f32 s17, s24, s21
- .long 0xee8c8a0a // vdiv.f32 s16, s24, s20
- .long 0xf2606cf2 // vfms.f32 q11, q8, q9
- .long 0xf4e42cbe // vld1.32 {d18[]-d19[]}, [r4 :32], lr
- .long 0xe28f20e4 // add r2, pc, #228
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20ec // add r2, pc, #236
- .long 0xed9faa47 // vldr s20, [pc, #284]
- .long 0xf2660dc8 // vsub.f32 q8, q11, q4
- .long 0xf3422df0 // vmul.f32 q9, q9, q8
- .long 0xf3fb0762 // vcvt.s32.f32 q8, q9
- .long 0xf3fb4660 // vcvt.f32.s32 q10, q8
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3646ee2 // vcgt.f32 q11, q10, q9
- .long 0xf35861f0 // vbsl q11, q12, q8
- .long 0xf2644de6 // vsub.f32 q10, q10, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf2624de4 // vsub.f32 q10, q9, q10
- .long 0xf226cde4 // vsub.f32 q6, q11, q10
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf4e48cbf // vld1.32 {d24[]-d25[]}, [r4 :32]
- .long 0xf2422de6 // vadd.f32 q9, q9, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe283200c // add r2, r3, #12
- .long 0xeeca9a2d // vdiv.f32 s19, s20, s27
- .long 0xee8a9a0d // vdiv.f32 s18, s20, s26
- .long 0xeeca8a2c // vdiv.f32 s17, s20, s25
- .long 0xee8a8a0c // vdiv.f32 s16, s20, s24
- .long 0xf2642cf6 // vfms.f32 q9, q10, q11
- .long 0xf2c4465b // vmov.i32 q10, #1258291200
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf2422dc8 // vadd.f32 q9, q9, q4
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2424cd0 // vfma.f32 q10, q9, q0
- .long 0xf3fb27e6 // vcvt.u32.f32 q9, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf3466ec0 // vcge.f32 q11, q11, q0
- .long 0xf2482de2 // vadd.f32 q9, q12, q9
- .long 0xf35461f2 // vbsl q11, q10, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2460fe0 // vmax.f32 q8, q11, q8
- .long 0xf2200fe2 // vmin.f32 q0, q8, q9
- .long 0xecbd8b0c // vpop {d8-d13}
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fdce9a3 // .word 0x3fdce9a3
- .long 0x41ddd2fe // .word 0x41ddd2fe
-
-HIDDEN _sk_parametric_g_vfp4
-.globl _sk_parametric_g_vfp4
-FUNCTION(_sk_parametric_g_vfp4)
-_sk_parametric_g_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xed2d8b0c // vpush {d8-d13}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0e014 // mov lr, #20
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe2832004 // add r2, r3, #4
- .long 0xed9fca62 // vldr s24, [pc, #392]
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf2402cd2 // vfma.f32 q9, q8, q1
- .long 0xf2c70d5f // vmov.i32 q8, #8388607
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2f43 // add r2, pc, #268
- .long 0xf24201f0 // vand q8, q9, q8
- .long 0xf2c3075f // vorr.i32 q8, #1056964608
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf200ade4 // vadd.f32 q5, q8, q10
- .long 0xf2c34654 // vmov.i32 q10, #872415232
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xeecc9a2b // vdiv.f32 s19, s24, s23
- .long 0xee8c9a0b // vdiv.f32 s18, s24, s22
- .long 0xeecc8a2a // vdiv.f32 s17, s24, s21
- .long 0xee8c8a0a // vdiv.f32 s16, s24, s20
- .long 0xf2606cf2 // vfms.f32 q11, q8, q9
- .long 0xf4e42cbe // vld1.32 {d18[]-d19[]}, [r4 :32], lr
- .long 0xe28f20e4 // add r2, pc, #228
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20ec // add r2, pc, #236
- .long 0xed9faa47 // vldr s20, [pc, #284]
- .long 0xf2660dc8 // vsub.f32 q8, q11, q4
- .long 0xf3422df0 // vmul.f32 q9, q9, q8
- .long 0xf3fb0762 // vcvt.s32.f32 q8, q9
- .long 0xf3fb4660 // vcvt.f32.s32 q10, q8
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3646ee2 // vcgt.f32 q11, q10, q9
- .long 0xf35861f0 // vbsl q11, q12, q8
- .long 0xf2644de6 // vsub.f32 q10, q10, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf2624de4 // vsub.f32 q10, q9, q10
- .long 0xf226cde4 // vsub.f32 q6, q11, q10
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf4e48cbf // vld1.32 {d24[]-d25[]}, [r4 :32]
- .long 0xf2422de6 // vadd.f32 q9, q9, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe283200c // add r2, r3, #12
- .long 0xeeca9a2d // vdiv.f32 s19, s20, s27
- .long 0xee8a9a0d // vdiv.f32 s18, s20, s26
- .long 0xeeca8a2c // vdiv.f32 s17, s20, s25
- .long 0xee8a8a0c // vdiv.f32 s16, s20, s24
- .long 0xf2642cf6 // vfms.f32 q9, q10, q11
- .long 0xf2c4465b // vmov.i32 q10, #1258291200
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf2422dc8 // vadd.f32 q9, q9, q4
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2424cd2 // vfma.f32 q10, q9, q1
- .long 0xf3fb27e6 // vcvt.u32.f32 q9, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf3466ec2 // vcge.f32 q11, q11, q1
- .long 0xf2482de2 // vadd.f32 q9, q12, q9
- .long 0xf35461f2 // vbsl q11, q10, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2460fe0 // vmax.f32 q8, q11, q8
- .long 0xf2202fe2 // vmin.f32 q1, q8, q9
- .long 0xecbd8b0c // vpop {d8-d13}
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fdce9a3 // .word 0x3fdce9a3
- .long 0x41ddd2fe // .word 0x41ddd2fe
-
-HIDDEN _sk_parametric_b_vfp4
-.globl _sk_parametric_b_vfp4
-FUNCTION(_sk_parametric_b_vfp4)
-_sk_parametric_b_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xed2d8b0c // vpush {d8-d13}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0e014 // mov lr, #20
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe2832004 // add r2, r3, #4
- .long 0xed9fca62 // vldr s24, [pc, #392]
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf2402cd4 // vfma.f32 q9, q8, q2
- .long 0xf2c70d5f // vmov.i32 q8, #8388607
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2f43 // add r2, pc, #268
- .long 0xf24201f0 // vand q8, q9, q8
- .long 0xf2c3075f // vorr.i32 q8, #1056964608
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf200ade4 // vadd.f32 q5, q8, q10
- .long 0xf2c34654 // vmov.i32 q10, #872415232
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xeecc9a2b // vdiv.f32 s19, s24, s23
- .long 0xee8c9a0b // vdiv.f32 s18, s24, s22
- .long 0xeecc8a2a // vdiv.f32 s17, s24, s21
- .long 0xee8c8a0a // vdiv.f32 s16, s24, s20
- .long 0xf2606cf2 // vfms.f32 q11, q8, q9
- .long 0xf4e42cbe // vld1.32 {d18[]-d19[]}, [r4 :32], lr
- .long 0xe28f20e4 // add r2, pc, #228
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20ec // add r2, pc, #236
- .long 0xed9faa47 // vldr s20, [pc, #284]
- .long 0xf2660dc8 // vsub.f32 q8, q11, q4
- .long 0xf3422df0 // vmul.f32 q9, q9, q8
- .long 0xf3fb0762 // vcvt.s32.f32 q8, q9
- .long 0xf3fb4660 // vcvt.f32.s32 q10, q8
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3646ee2 // vcgt.f32 q11, q10, q9
- .long 0xf35861f0 // vbsl q11, q12, q8
- .long 0xf2644de6 // vsub.f32 q10, q10, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf2624de4 // vsub.f32 q10, q9, q10
- .long 0xf226cde4 // vsub.f32 q6, q11, q10
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf4e48cbf // vld1.32 {d24[]-d25[]}, [r4 :32]
- .long 0xf2422de6 // vadd.f32 q9, q9, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe283200c // add r2, r3, #12
- .long 0xeeca9a2d // vdiv.f32 s19, s20, s27
- .long 0xee8a9a0d // vdiv.f32 s18, s20, s26
- .long 0xeeca8a2c // vdiv.f32 s17, s20, s25
- .long 0xee8a8a0c // vdiv.f32 s16, s20, s24
- .long 0xf2642cf6 // vfms.f32 q9, q10, q11
- .long 0xf2c4465b // vmov.i32 q10, #1258291200
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf2422dc8 // vadd.f32 q9, q9, q4
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2424cd4 // vfma.f32 q10, q9, q2
- .long 0xf3fb27e6 // vcvt.u32.f32 q9, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf3466ec4 // vcge.f32 q11, q11, q2
- .long 0xf2482de2 // vadd.f32 q9, q12, q9
- .long 0xf35461f2 // vbsl q11, q10, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2460fe0 // vmax.f32 q8, q11, q8
- .long 0xf2204fe2 // vmin.f32 q2, q8, q9
- .long 0xecbd8b0c // vpop {d8-d13}
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fdce9a3 // .word 0x3fdce9a3
- .long 0x41ddd2fe // .word 0x41ddd2fe
-
-HIDDEN _sk_parametric_a_vfp4
-.globl _sk_parametric_a_vfp4
-FUNCTION(_sk_parametric_a_vfp4)
-_sk_parametric_a_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xed2d8b0c // vpush {d8-d13}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0e014 // mov lr, #20
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe2832004 // add r2, r3, #4
- .long 0xed9fca62 // vldr s24, [pc, #392]
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf2402cd6 // vfma.f32 q9, q8, q3
- .long 0xf2c70d5f // vmov.i32 q8, #8388607
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28f2f41 // add r2, pc, #260
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2f43 // add r2, pc, #268
- .long 0xf24201f0 // vand q8, q9, q8
- .long 0xf2c3075f // vorr.i32 q8, #1056964608
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf200ade4 // vadd.f32 q5, q8, q10
- .long 0xf2c34654 // vmov.i32 q10, #872415232
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xeecc9a2b // vdiv.f32 s19, s24, s23
- .long 0xee8c9a0b // vdiv.f32 s18, s24, s22
- .long 0xeecc8a2a // vdiv.f32 s17, s24, s21
- .long 0xee8c8a0a // vdiv.f32 s16, s24, s20
- .long 0xf2606cf2 // vfms.f32 q11, q8, q9
- .long 0xf4e42cbe // vld1.32 {d18[]-d19[]}, [r4 :32], lr
- .long 0xe28f20e4 // add r2, pc, #228
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20ec // add r2, pc, #236
- .long 0xed9faa47 // vldr s20, [pc, #284]
- .long 0xf2660dc8 // vsub.f32 q8, q11, q4
- .long 0xf3422df0 // vmul.f32 q9, q9, q8
- .long 0xf3fb0762 // vcvt.s32.f32 q8, q9
- .long 0xf3fb4660 // vcvt.f32.s32 q10, q8
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3646ee2 // vcgt.f32 q11, q10, q9
- .long 0xf35861f0 // vbsl q11, q12, q8
- .long 0xf2644de6 // vsub.f32 q10, q10, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf2624de4 // vsub.f32 q10, q9, q10
- .long 0xf226cde4 // vsub.f32 q6, q11, q10
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf4e48cbf // vld1.32 {d24[]-d25[]}, [r4 :32]
- .long 0xf2422de6 // vadd.f32 q9, q9, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe283200c // add r2, r3, #12
- .long 0xeeca9a2d // vdiv.f32 s19, s20, s27
- .long 0xee8a9a0d // vdiv.f32 s18, s20, s26
- .long 0xeeca8a2c // vdiv.f32 s17, s20, s25
- .long 0xee8a8a0c // vdiv.f32 s16, s20, s24
- .long 0xf2642cf6 // vfms.f32 q9, q10, q11
- .long 0xf2c4465b // vmov.i32 q10, #1258291200
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf2422dc8 // vadd.f32 q9, q9, q4
- .long 0xf2426cf4 // vfma.f32 q11, q9, q10
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2424cd6 // vfma.f32 q10, q9, q3
- .long 0xf3fb27e6 // vcvt.u32.f32 q9, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf3466ec6 // vcge.f32 q11, q11, q3
- .long 0xf2482de2 // vadd.f32 q9, q12, q9
- .long 0xf35461f2 // vbsl q11, q10, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2460fe0 // vmax.f32 q8, q11, q8
- .long 0xf2206fe2 // vmin.f32 q3, q8, q9
- .long 0xecbd8b0c // vpop {d8-d13}
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fdce9a3 // .word 0x3fdce9a3
- .long 0x41ddd2fe // .word 0x41ddd2fe
-
-HIDDEN _sk_gamma_vfp4
-.globl _sk_gamma_vfp4
-FUNCTION(_sk_gamma_vfp4)
-_sk_gamma_vfp4:
- .long 0xe92d0030 // push {r4, r5}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd028 // sub sp, sp, #40
- .long 0xf2c70d5f // vmov.i32 q8, #8388607
- .long 0xe28d2010 // add r2, sp, #16
- .long 0xf2628152 // vorr q12, q1, q1
- .long 0xed9faa9a // vldr s20, [pc, #616]
- .long 0xf2440170 // vand q8, q2, q8
- .long 0xec826b04 // vstmia r2, {d6-d7}
- .long 0xe28f2f7b // add r2, pc, #492
- .long 0xf2c3075f // vorr.i32 q8, #1056964608
- .long 0xf4222acf // vld1.64 {d2-d3}, [r2]
- .long 0xf3fb4644 // vcvt.f32.s32 q10, q2
- .long 0xe28f2f7b // add r2, pc, #492
- .long 0xf2008dc2 // vadd.f32 q4, q8, q1
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f2e1f // add r2, pc, #496
- .long 0xf2c3a654 // vmov.i32 q13, #872415232
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf26261f2 // vorr q11, q9, q9
- .long 0xf2446cfa // vfma.f32 q11, q10, q13
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xeeca5a29 // vdiv.f32 s11, s20, s19
- .long 0xf4e3ecbf // vld1.32 {d30[]-d31[]}, [r3 :32]
- .long 0xe28f3f76 // add r3, pc, #472
- .long 0xf2606cfc // vfms.f32 q11, q8, q14
- .long 0xee8a5a09 // vdiv.f32 s10, s20, s18
- .long 0xeeca4a28 // vdiv.f32 s9, s20, s17
- .long 0xee8a4a08 // vdiv.f32 s8, s20, s16
- .long 0xf2660dc4 // vsub.f32 q8, q11, q2
- .long 0xf423cacf // vld1.64 {d12-d13}, [r3]
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xed9fba7f // vldr s22, [pc, #508]
- .long 0xf2876d5f // vmov.i32 q3, #8388607
- .long 0xf2c0a050 // vmov.i32 q13, #0
- .long 0xf3406dfe // vmul.f32 q11, q8, q15
- .long 0xf3fb0766 // vcvt.s32.f32 q8, q11
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3604ee6 // vcgt.f32 q10, q8, q11
- .long 0xf35c4154 // vbsl q10, q6, q2
- .long 0xf2600de4 // vsub.f32 q8, q8, q10
- .long 0xf3fb4668 // vcvt.f32.s32 q10, q12
- .long 0xf2660de0 // vsub.f32 q8, q11, q8
- .long 0xeccd0b04 // vstmia sp, {d16-d17}
- .long 0xe28f3f66 // add r3, pc, #408
- .long 0xf423eacf // vld1.64 {d14-d15}, [r3]
- .long 0xe28f3e1a // add r3, pc, #416
- .long 0xf22e8d60 // vsub.f32 q4, q7, q8
- .long 0xf24801d6 // vand q8, q12, q3
- .long 0xf2c3075f // vorr.i32 q8, #1056964608
- .long 0xf26281f2 // vorr q12, q9, q9
- .long 0xeecb5a29 // vdiv.f32 s11, s22, s19
- .long 0xee8b5a09 // vdiv.f32 s10, s22, s18
- .long 0xeecb4a28 // vdiv.f32 s9, s22, s17
- .long 0xee8b4a08 // vdiv.f32 s8, s22, s16
- .long 0xf2008dc2 // vadd.f32 q4, q8, q1
- .long 0xeeca7a29 // vdiv.f32 s15, s20, s19
- .long 0xee8a7a09 // vdiv.f32 s14, s20, s18
- .long 0xeeca6a28 // vdiv.f32 s13, s20, s17
- .long 0xee8a6a08 // vdiv.f32 s12, s20, s16
- .long 0xf2838654 // vmov.i32 q4, #872415232
- .long 0xf2448cd8 // vfma.f32 q12, q10, q4
- .long 0xf2608cfc // vfms.f32 q12, q8, q14
- .long 0xf2680dc6 // vsub.f32 q8, q12, q3
- .long 0xf3400dfe // vmul.f32 q8, q8, q15
- .long 0xf3fb4760 // vcvt.s32.f32 q10, q8
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3648ee0 // vcgt.f32 q12, q10, q8
- .long 0xf35c817a // vbsl q12, q6, q13
- .long 0xf2644de8 // vsub.f32 q10, q10, q12
- .long 0xf260ade4 // vsub.f32 q13, q8, q10
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xe28f3f52 // add r3, pc, #328
- .long 0xf2408de4 // vadd.f32 q12, q8, q10
- .long 0xf4630acf // vld1.64 {d16-d17}, [r3]
- .long 0xe28d3010 // add r3, sp, #16
- .long 0xf22e6d6a // vsub.f32 q3, q7, q13
- .long 0xf26a8cf0 // vfms.f32 q12, q13, q8
- .long 0xf260a150 // vorr q13, q0, q0
- .long 0xf2870d5f // vmov.i32 q0, #8388607
- .long 0xeecb9a27 // vdiv.f32 s19, s22, s15
- .long 0xee8b9a07 // vdiv.f32 s18, s22, s14
- .long 0xeecb8a26 // vdiv.f32 s17, s22, s13
- .long 0xf20a01d0 // vand q0, q13, q0
- .long 0xf283075f // vorr.i32 q0, #1056964608
- .long 0xee8b8a06 // vdiv.f32 s16, s22, s12
- .long 0xf2002d42 // vadd.f32 q1, q0, q1
- .long 0xf3fba66a // vcvt.f32.s32 q13, q13
- .long 0xeeca7a23 // vdiv.f32 s15, s20, s7
- .long 0xee8a7a03 // vdiv.f32 s14, s20, s6
- .long 0xeeca6a22 // vdiv.f32 s13, s20, s5
- .long 0xee8a6a02 // vdiv.f32 s12, s20, s4
- .long 0xf2832654 // vmov.i32 q1, #872415232
- .long 0xf24a2cd2 // vfma.f32 q9, q13, q1
- .long 0xf2602c7c // vfms.f32 q9, q0, q14
- .long 0xf2622dc6 // vsub.f32 q9, q9, q3
- .long 0xec936b04 // vldmia r3, {d6-d7}
- .long 0xf3422dfe // vmul.f32 q9, q9, q15
- .long 0xf2c0e050 // vmov.i32 q15, #0
- .long 0xf3fba762 // vcvt.s32.f32 q13, q9
- .long 0xf3fba66a // vcvt.f32.s32 q13, q13
- .long 0xf36acee2 // vcgt.f32 q14, q13, q9
- .long 0xf35cc17e // vbsl q14, q6, q15
- .long 0xf26aadec // vsub.f32 q13, q13, q14
- .long 0xf262adea // vsub.f32 q13, q9, q13
- .long 0xf2422de4 // vadd.f32 q9, q9, q10
- .long 0xf2464de4 // vadd.f32 q10, q11, q10
- .long 0xecdd6b04 // vldmia sp, {d22-d23}
- .long 0xf22e0d6a // vsub.f32 q0, q7, q13
- .long 0xf26a2cf0 // vfms.f32 q9, q13, q8
- .long 0xf2664cf0 // vfms.f32 q10, q11, q8
- .long 0xeecb3a21 // vdiv.f32 s7, s22, s3
- .long 0xee8b3a01 // vdiv.f32 s6, s22, s2
- .long 0xeecb2a20 // vdiv.f32 s5, s22, s1
- .long 0xee8b2a00 // vdiv.f32 s4, s22, s0
- .long 0xf2420dc2 // vadd.f32 q8, q9, q1
- .long 0xf2482dc8 // vadd.f32 q9, q12, q4
- .long 0xf2444dc4 // vadd.f32 q10, q10, q2
- .long 0xf2c4665b // vmov.i32 q11, #1258291200
- .long 0xf2c3a65f // vmov.i32 q13, #1056964608
- .long 0xf2c3865f // vmov.i32 q12, #1056964608
- .long 0xf240acf6 // vfma.f32 q13, q8, q11
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2420cf6 // vfma.f32 q8, q9, q11
- .long 0xf2448cf6 // vfma.f32 q12, q10, q11
- .long 0xf3bb07ea // vcvt.u32.f32 q0, q13
- .long 0xf3bb27e0 // vcvt.u32.f32 q1, q8
- .long 0xf3bb47e8 // vcvt.u32.f32 q2, q12
- .long 0xe28dd028 // add sp, sp, #40
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd0030 // pop {r4, r5}
- .long 0xe12fff12 // bx r2
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0x3eb444f9 // .word 0x3eb444f9
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0xc2f87377 // .word 0xc2f87377
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3fbfbf75 // .word 0x3fbfbf75
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x409af5f8 // .word 0x409af5f8
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x42f28c51 // .word 0x42f28c51
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fbebc8d // .word 0x3fbebc8d
- .long 0x3fdce9a3 // .word 0x3fdce9a3
- .long 0x41ddd2fe // .word 0x41ddd2fe
-
-HIDDEN _sk_lab_to_xyz_vfp4
-.globl _sk_lab_to_xyz_vfp4
-FUNCTION(_sk_lab_to_xyz_vfp4)
-_sk_lab_to_xyz_vfp4:
- .long 0xed2d8b04 // vpush {d8-d9}
- .long 0xe28f20d4 // add r2, pc, #212
- .long 0xf2c30f50 // vmov.f32 q8, #16
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f20d8 // add r2, pc, #216
- .long 0xf2400c72 // vfma.f32 q8, q0, q9
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28f20dc // add r2, pc, #220
- .long 0xf3c46653 // vmov.i32 q11, #-1023410176
- .long 0xf3c42653 // vmov.i32 q9, #-1023410176
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf2426c74 // vfma.f32 q11, q1, q10
- .long 0xe28f20d8 // add r2, pc, #216
- .long 0xf2442c74 // vfma.f32 q9, q2, q10
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28f20dc // add r2, pc, #220
- .long 0xf3400df8 // vmul.f32 q8, q8, q12
- .long 0xf26081f0 // vorr q12, q8, q8
- .long 0xf2468cf4 // vfma.f32 q12, q11, q10
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xe28f20d8 // add r2, pc, #216
- .long 0xf26061f0 // vorr q11, q8, q8
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf2626cf4 // vfms.f32 q11, q9, q10
- .long 0xe28f20d8 // add r2, pc, #216
- .long 0xf4228acf // vld1.64 {d8-d9}, [r2]
- .long 0xe28f20e0 // add r2, pc, #224
- .long 0xf3404df0 // vmul.f32 q10, q8, q8
- .long 0xf248edea // vadd.f32 q15, q12, q13
- .long 0xf3482df8 // vmul.f32 q9, q12, q12
- .long 0xf3404df4 // vmul.f32 q10, q8, q10
- .long 0xf346cdf6 // vmul.f32 q14, q11, q11
- .long 0xf2400dea // vadd.f32 q8, q8, q13
- .long 0xf34eedd8 // vmul.f32 q15, q15, q4
- .long 0xf3482df2 // vmul.f32 q9, q12, q9
- .long 0xf2468dea // vadd.f32 q12, q11, q13
- .long 0xf3466dfc // vmul.f32 q11, q11, q14
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf3242eec // vcgt.f32 q1, q10, q14
- .long 0xe28f20bc // add r2, pc, #188
- .long 0xf3220eec // vcgt.f32 q0, q9, q14
- .long 0xf366aeec // vcgt.f32 q13, q11, q14
- .long 0xf3488dd8 // vmul.f32 q12, q12, q4
- .long 0xf31201fe // vbsl q0, q9, q15
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f20b4 // add r2, pc, #180
- .long 0xf356a1f8 // vbsl q13, q11, q12
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf3400dd8 // vmul.f32 q8, q8, q4
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3000d72 // vmul.f32 q0, q0, q9
- .long 0xf30a4df6 // vmul.f32 q2, q13, q11
- .long 0xf31421f0 // vbsl q1, q10, q8
- .long 0xecbd8b04 // vpop {d8-d9}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x42c80000 // .word 0x42c80000
- .long 0x42c80000 // .word 0x42c80000
- .long 0x42c80000 // .word 0x42c80000
- .long 0x42c80000 // .word 0x42c80000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x3c0d3dcb // .word 0x3c0d3dcb
- .long 0x3c0d3dcb // .word 0x3c0d3dcb
- .long 0x3c0d3dcb // .word 0x3c0d3dcb
- .long 0x3c0d3dcb // .word 0x3c0d3dcb
- .long 0x3b03126f // .word 0x3b03126f
- .long 0x3b03126f // .word 0x3b03126f
- .long 0x3b03126f // .word 0x3b03126f
- .long 0x3b03126f // .word 0x3b03126f
- .long 0x3ba3d70a // .word 0x3ba3d70a
- .long 0x3ba3d70a // .word 0x3ba3d70a
- .long 0x3ba3d70a // .word 0x3ba3d70a
- .long 0x3ba3d70a // .word 0x3ba3d70a
- .long 0xbe0d3dcb // .word 0xbe0d3dcb
- .long 0xbe0d3dcb // .word 0xbe0d3dcb
- .long 0xbe0d3dcb // .word 0xbe0d3dcb
- .long 0xbe0d3dcb // .word 0xbe0d3dcb
- .long 0x3e038050 // .word 0x3e038050
- .long 0x3e038050 // .word 0x3e038050
- .long 0x3e038050 // .word 0x3e038050
- .long 0x3e038050 // .word 0x3e038050
- .long 0x3c1118c2 // .word 0x3c1118c2
- .long 0x3c1118c2 // .word 0x3c1118c2
- .long 0x3c1118c2 // .word 0x3c1118c2
- .long 0x3c1118c2 // .word 0x3c1118c2
- .long 0x3f76d71f // .word 0x3f76d71f
- .long 0x3f76d71f // .word 0x3f76d71f
- .long 0x3f76d71f // .word 0x3f76d71f
- .long 0x3f76d71f // .word 0x3f76d71f
- .long 0x3f5340f6 // .word 0x3f5340f6
- .long 0x3f5340f6 // .word 0x3f5340f6
- .long 0x3f5340f6 // .word 0x3f5340f6
- .long 0x3f5340f6 // .word 0x3f5340f6
-
-HIDDEN _sk_load_a8_vfp4
-.globl _sk_load_a8_vfp4
-FUNCTION(_sk_load_a8_vfp4)
-_sk_load_a8_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe24dd008 // sub sp, sp, #8
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0224392 // mla r2, r2, r3, r4
- .long 0xe082200e // add r2, r2, lr
- .long 0x1a000012 // bne 3e88 <sk_load_a8_vfp4+0x78>
- .long 0xe5922000 // ldr r2, [r2]
- .long 0xe58d2000 // str r2, [sp]
- .long 0xe1a0200d // mov r2, sp
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xf3c80a30 // vmovl.u8 q8, d16
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xe28f209c // add r2, pc, #156
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xf2802050 // vmov.i32 q1, #0
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3006df2 // vmul.f32 q3, q8, q9
- .long 0xe28dd008 // add sp, sp, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a000012 // beq 3ee0 <sk_load_a8_vfp4+0xd0>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000005 // beq 3eb8 <sk_load_a8_vfp4+0xa8>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffe9 // bne 3e50 <sk_load_a8_vfp4+0x40>
- .long 0xe3a04000 // mov r4, #0
- .long 0xe5d23002 // ldrb r3, [r2, #2]
- .long 0xee804bb0 // vdup.16 d16, r4
- .long 0xee203bb0 // vmov.16 d16[2], r3
- .long 0xe1d220b0 // ldrh r2, [r2]
- .long 0xe1cd20b4 // strh r2, [sp, #4]
- .long 0xe28d2004 // add r2, sp, #4
- .long 0xf4e2241f // vld1.16 {d18[0]}, [r2 :16]
- .long 0xf3c82a32 // vmovl.u8 q9, d18
- .long 0xf3d02a32 // vmovl.u16 q9, d18
- .long 0xf3f62124 // vuzp.16 d18, d20
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffdb // b 3e50 <sk_load_a8_vfp4+0x40>
- .long 0xe3a03000 // mov r3, #0
- .long 0xe5d22000 // ldrb r2, [r2]
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xee002bb0 // vmov.16 d16[0], r2
- .long 0xeaffffd6 // b 3e50 <sk_load_a8_vfp4+0x40>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_load_a8_dst_vfp4
-.globl _sk_load_a8_dst_vfp4
-FUNCTION(_sk_load_a8_dst_vfp4)
-_sk_load_a8_dst_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe24dd008 // sub sp, sp, #8
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe590c000 // ldr ip, [r0]
- .long 0xe2805030 // add r5, r0, #48
- .long 0xe9904004 // ldmib r0, {r2, lr}
- .long 0xe5934000 // ldr r4, [r3]
- .long 0xe5933004 // ldr r3, [r3, #4]
- .long 0xe35e0000 // cmp lr, #0
- .long 0xf4450acf // vst1.64 {d16-d17}, [r5]
- .long 0xe0224293 // mla r2, r3, r2, r4
- .long 0xe2803020 // add r3, r0, #32
- .long 0xf4430acf // vst1.64 {d16-d17}, [r3]
- .long 0xe2803010 // add r3, r0, #16
- .long 0xf4430acf // vst1.64 {d16-d17}, [r3]
- .long 0xe082300c // add r3, r2, ip
- .long 0xe280c040 // add ip, r0, #64
- .long 0x1a000011 // bne 3f9c <sk_load_a8_dst_vfp4+0x94>
- .long 0xe5932000 // ldr r2, [r3]
- .long 0xe58d2000 // str r2, [sp]
- .long 0xe1a0200d // mov r2, sp
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xf3c80a30 // vmovl.u8 q8, d16
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xe28f2094 // add r2, pc, #148
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3400df2 // vmul.f32 q8, q8, q9
- .long 0xf44c0acf // vst1.64 {d16-d17}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe28dd008 // add sp, sp, #8
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff13 // bx r3
- .long 0xe20e2003 // and r2, lr, #3
- .long 0xe3520001 // cmp r2, #1
- .long 0x0a000012 // beq 3ff4 <sk_load_a8_dst_vfp4+0xec>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3520002 // cmp r2, #2
- .long 0x0a000005 // beq 3fcc <sk_load_a8_dst_vfp4+0xc4>
- .long 0xe3520003 // cmp r2, #3
- .long 0x1affffea // bne 3f68 <sk_load_a8_dst_vfp4+0x60>
- .long 0xe3a05000 // mov r5, #0
- .long 0xe5d32002 // ldrb r2, [r3, #2]
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xee202bb0 // vmov.16 d16[2], r2
- .long 0xe1d320b0 // ldrh r2, [r3]
- .long 0xe1cd20b4 // strh r2, [sp, #4]
- .long 0xe28d2004 // add r2, sp, #4
- .long 0xf4e2241f // vld1.16 {d18[0]}, [r2 :16]
- .long 0xf3c82a32 // vmovl.u8 q9, d18
- .long 0xf3d02a32 // vmovl.u16 q9, d18
- .long 0xf3f62124 // vuzp.16 d18, d20
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffdc // b 3f68 <sk_load_a8_dst_vfp4+0x60>
- .long 0xe5d32000 // ldrb r2, [r3]
- .long 0xe3a03000 // mov r3, #0
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xee002bb0 // vmov.16 d16[0], r2
- .long 0xeaffffd7 // b 3f68 <sk_load_a8_dst_vfp4+0x60>
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_gather_a8_vfp4
-.globl _sk_gather_a8_vfp4
-FUNCTION(_sk_gather_a8_vfp4)
-_sk_gather_a8_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf2402fc0 // vmax.f32 q9, q8, q0
- .long 0xe283200c // add r2, r3, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2400fc2 // vmax.f32 q8, q8, q1
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf26668e4 // vadd.i32 q11, q11, q10
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe4932004 // ldr r2, [r3], #4
- .long 0xf26848e4 // vadd.i32 q10, q12, q10
- .long 0xf2600fe6 // vmin.f32 q8, q8, q11
- .long 0xf2622fe4 // vmin.f32 q9, q9, q10
- .long 0xf4e34cbf // vld1.32 {d20[]-d21[]}, [r3 :32]
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xf2802050 // vmov.i32 q1, #0
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xf26429e0 // vmla.i32 q9, q10, q8
- .long 0xee323b90 // vmov.32 r3, d18[1]
- .long 0xee12eb90 // vmov.32 lr, d18[0]
- .long 0xee134b90 // vmov.32 r4, d19[0]
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xe7d26003 // ldrb r6, [r2, r3]
- .long 0xe7d2300e // ldrb r3, [r2, lr]
- .long 0xee003bb0 // vmov.16 d16[0], r3
- .long 0xe7d23004 // ldrb r3, [r2, r4]
- .long 0xe7d22005 // ldrb r2, [r2, r5]
- .long 0xee006bf0 // vmov.16 d16[1], r6
- .long 0xee203bb0 // vmov.16 d16[2], r3
- .long 0xee202bf0 // vmov.16 d16[3], r2
- .long 0xe28f201c // add r2, pc, #28
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3006df2 // vmul.f32 q3, q8, q9
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_store_a8_vfp4
-.globl _sk_store_a8_vfp4
-FUNCTION(_sk_store_a8_vfp4)
-_sk_store_a8_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe28f2094 // add r2, pc, #148
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf2460c72 // vfma.f32 q8, q3, q9
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xf3fb07e0 // vcvt.u32.f32 q8, q8
- .long 0xe0224392 // mla r2, r2, r3, r4
- .long 0xe082200e // add r2, r2, lr
- .long 0xf3f60220 // vmovn.i32 d16, q8
- .long 0x1a000005 // bne 4130 <sk_store_a8_vfp4+0x58>
- .long 0xf3f20121 // vuzp.8 d16, d17
- .long 0xf4c2080f // vst1.32 {d16[0]}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a00000a // beq 4168 <sk_store_a8_vfp4+0x90>
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000003 // beq 4154 <sk_store_a8_vfp4+0x7c>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1afffff4 // bne 4120 <sk_store_a8_vfp4+0x48>
- .long 0xeeb03bb0 // vmov.u16 r3, d16[2]
- .long 0xe5c23002 // strb r3, [r2, #2]
- .long 0xee903bf0 // vmov.u16 r3, d16[1]
- .long 0xee904bb0 // vmov.u16 r4, d16[0]
- .long 0xe5c23001 // strb r3, [r2, #1]
- .long 0xe5c24000 // strb r4, [r2]
- .long 0xeaffffed // b 4120 <sk_store_a8_vfp4+0x48>
- .long 0xee903bb0 // vmov.u16 r3, d16[0]
- .long 0xe5c23000 // strb r3, [r2]
- .long 0xeaffffea // b 4120 <sk_store_a8_vfp4+0x48>
- .long 0xe320f000 // nop {0}
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
-
-HIDDEN _sk_load_g8_vfp4
-.globl _sk_load_g8_vfp4
-FUNCTION(_sk_load_g8_vfp4)
-_sk_load_g8_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe24dd008 // sub sp, sp, #8
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0224392 // mla r2, r2, r3, r4
- .long 0xe082200e // add r2, r2, lr
- .long 0x1a000013 // bne 4204 <sk_load_g8_vfp4+0x7c>
- .long 0xe5922000 // ldr r2, [r2]
- .long 0xe58d2000 // str r2, [sp]
- .long 0xe1a0200d // mov r2, sp
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xf3c80a30 // vmovl.u8 q8, d16
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xe28f209c // add r2, pc, #156
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f20a4 // add r2, pc, #164
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3000df2 // vmul.f32 q0, q8, q9
- .long 0xf2202150 // vorr q1, q0, q0
- .long 0xf2204150 // vorr q2, q0, q0
- .long 0xe28dd008 // add sp, sp, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a000012 // beq 425c <sk_load_g8_vfp4+0xd4>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000005 // beq 4234 <sk_load_g8_vfp4+0xac>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffe8 // bne 41c8 <sk_load_g8_vfp4+0x40>
- .long 0xe3a04000 // mov r4, #0
- .long 0xe5d23002 // ldrb r3, [r2, #2]
- .long 0xee804bb0 // vdup.16 d16, r4
- .long 0xee203bb0 // vmov.16 d16[2], r3
- .long 0xe1d220b0 // ldrh r2, [r2]
- .long 0xe1cd20b4 // strh r2, [sp, #4]
- .long 0xe28d2004 // add r2, sp, #4
- .long 0xf4e2241f // vld1.16 {d18[0]}, [r2 :16]
- .long 0xf3c82a32 // vmovl.u8 q9, d18
- .long 0xf3d02a32 // vmovl.u16 q9, d18
- .long 0xf3f62124 // vuzp.16 d18, d20
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffda // b 41c8 <sk_load_g8_vfp4+0x40>
- .long 0xe3a03000 // mov r3, #0
- .long 0xe5d22000 // ldrb r2, [r2]
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xee002bb0 // vmov.16 d16[0], r2
- .long 0xeaffffd5 // b 41c8 <sk_load_g8_vfp4+0x40>
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_load_g8_dst_vfp4
-.globl _sk_load_g8_dst_vfp4
-FUNCTION(_sk_load_g8_dst_vfp4)
-_sk_load_g8_dst_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe24dd008 // sub sp, sp, #8
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0225492 // mla r2, r2, r4, r5
- .long 0xe0824003 // add r4, r2, r3
- .long 0xe2802020 // add r2, r0, #32
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a000015 // bne 4320 <sk_load_g8_dst_vfp4+0x90>
- .long 0xe5944000 // ldr r4, [r4]
- .long 0xe58d4000 // str r4, [sp]
- .long 0xe1a0400d // mov r4, sp
- .long 0xf4e4083f // vld1.32 {d16[0]}, [r4 :32]
- .long 0xf3c80a30 // vmovl.u8 q8, d16
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xe28f40a8 // add r4, pc, #168
- .long 0xf4642acf // vld1.64 {d18-d19}, [r4]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3400df2 // vmul.f32 q8, q8, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf44e0acf // vst1.64 {d16-d17}, [lr]
- .long 0xf4420acf // vst1.64 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf4430acf // vst1.64 {d16-d17}, [r3]
- .long 0xf44c2acf // vst1.64 {d18-d19}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe28dd008 // add sp, sp, #8
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff13 // bx r3
- .long 0xe2065003 // and r5, r6, #3
- .long 0xe3550001 // cmp r5, #1
- .long 0x0a000012 // beq 4378 <sk_load_g8_dst_vfp4+0xe8>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3550002 // cmp r5, #2
- .long 0x0a000005 // beq 4350 <sk_load_g8_dst_vfp4+0xc0>
- .long 0xe3550003 // cmp r5, #3
- .long 0x1affffe6 // bne 42dc <sk_load_g8_dst_vfp4+0x4c>
- .long 0xe3a06000 // mov r6, #0
- .long 0xe5d45002 // ldrb r5, [r4, #2]
- .long 0xee806bb0 // vdup.16 d16, r6
- .long 0xee205bb0 // vmov.16 d16[2], r5
- .long 0xe1d440b0 // ldrh r4, [r4]
- .long 0xe1cd40b4 // strh r4, [sp, #4]
- .long 0xe28d4004 // add r4, sp, #4
- .long 0xf4e4241f // vld1.16 {d18[0]}, [r4 :16]
- .long 0xf3c82a32 // vmovl.u8 q9, d18
- .long 0xf3d02a32 // vmovl.u16 q9, d18
- .long 0xf3f62124 // vuzp.16 d18, d20
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffd8 // b 42dc <sk_load_g8_dst_vfp4+0x4c>
- .long 0xe3a05000 // mov r5, #0
- .long 0xe5d44000 // ldrb r4, [r4]
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xee004bb0 // vmov.16 d16[0], r4
- .long 0xeaffffd3 // b 42dc <sk_load_g8_dst_vfp4+0x4c>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_gather_g8_vfp4
-.globl _sk_gather_g8_vfp4
-FUNCTION(_sk_gather_g8_vfp4)
-_sk_gather_g8_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf2402fc0 // vmax.f32 q9, q8, q0
- .long 0xe283200c // add r2, r3, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2400fc2 // vmax.f32 q8, q8, q1
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf26668e4 // vadd.i32 q11, q11, q10
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe4932004 // ldr r2, [r3], #4
- .long 0xf26848e4 // vadd.i32 q10, q12, q10
- .long 0xf2600fe6 // vmin.f32 q8, q8, q11
- .long 0xf2622fe4 // vmin.f32 q9, q9, q10
- .long 0xf4e34cbf // vld1.32 {d20[]-d21[]}, [r3 :32]
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xf26429e0 // vmla.i32 q9, q10, q8
- .long 0xee323b90 // vmov.32 r3, d18[1]
- .long 0xee12eb90 // vmov.32 lr, d18[0]
- .long 0xee134b90 // vmov.32 r4, d19[0]
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xe7d26003 // ldrb r6, [r2, r3]
- .long 0xe7d2300e // ldrb r3, [r2, lr]
- .long 0xee003bb0 // vmov.16 d16[0], r3
- .long 0xe7d23004 // ldrb r3, [r2, r4]
- .long 0xe7d22005 // ldrb r2, [r2, r5]
- .long 0xee006bf0 // vmov.16 d16[1], r6
- .long 0xee203bb0 // vmov.16 d16[2], r3
- .long 0xee202bf0 // vmov.16 d16[3], r2
- .long 0xe28f2028 // add r2, pc, #40
- .long 0xf3c70b3f // vbic.i16 d16, #65280
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f202c // add r2, pc, #44
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3000df2 // vmul.f32 q0, q8, q9
- .long 0xf2202150 // vorr q1, q0, q0
- .long 0xf2204150 // vorr q2, q0, q0
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff1c // bx ip
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_load_565_vfp4
-.globl _sk_load_565_vfp4
-FUNCTION(_sk_load_565_vfp4)
-_sk_load_565_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xe082208e // add r2, r2, lr, lsl #1
- .long 0x1a00001b // bne 4510 <sk_load_565_vfp4+0xa0>
- .long 0xf462074f // vld1.16 {d16}, [r2]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe3a02e7e // mov r2, #2016
- .long 0xf3c74258 // vmov.i32 q10, #63488
- .long 0xeea22b90 // vdup.32 q9, r2
- .long 0xf2c1605f // vmov.i32 q11, #31
- .long 0xe28f20b8 // add r2, pc, #184
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xf24001f6 // vand q8, q8, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xe28f20b0 // add r2, pc, #176
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20b8 // add r2, pc, #184
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe28f20bc // add r2, pc, #188
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xf3040df6 // vmul.f32 q0, q10, q11
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf3022df8 // vmul.f32 q1, q9, q12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3004dfa // vmul.f32 q2, q8, q13
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a000011 // beq 4564 <sk_load_565_vfp4+0xf4>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000005 // beq 4540 <sk_load_565_vfp4+0xd0>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffdc // bne 44a4 <sk_load_565_vfp4+0x34>
- .long 0xe3a03000 // mov r3, #0
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xe2823004 // add r3, r2, #4
- .long 0xf4e3049f // vld1.16 {d16[2]}, [r3 :16]
- .long 0xe5922000 // ldr r2, [r2]
- .long 0xe58d2000 // str r2, [sp]
- .long 0xe1a0200d // mov r2, sp
- .long 0xf4e2183f // vld1.32 {d17[0]}, [r2 :32]
- .long 0xf3d02a31 // vmovl.u16 q9, d17
- .long 0xf3f62121 // vuzp.16 d18, d17
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffcf // b 44a4 <sk_load_565_vfp4+0x34>
- .long 0xe3a03000 // mov r3, #0
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xf4e2041f // vld1.16 {d16[0]}, [r2 :16]
- .long 0xeaffffcb // b 44a4 <sk_load_565_vfp4+0x34>
- .long 0xe320f000 // nop {0}
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_load_565_dst_vfp4
-.globl _sk_load_565_dst_vfp4
-FUNCTION(_sk_load_565_dst_vfp4)
-_sk_load_565_dst_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0020492 // mul r2, r2, r4
- .long 0xe0852082 // add r2, r5, r2, lsl #1
- .long 0xe0824083 // add r4, r2, r3, lsl #1
- .long 0xe2802020 // add r2, r0, #32
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a00001f // bne 4674 <sk_load_565_dst_vfp4+0xbc>
- .long 0xf464074f // vld1.16 {d16}, [r4]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe3a04e7e // mov r4, #2016
- .long 0xf3c72258 // vmov.i32 q9, #63488
- .long 0xeea44b90 // vdup.32 q10, r4
- .long 0xf2c1605f // vmov.i32 q11, #31
- .long 0xe28f40c4 // add r4, pc, #196
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xf24001f6 // vand q8, q8, q11
- .long 0xf4646acf // vld1.64 {d22-d23}, [r4]
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xe28f40bc // add r4, pc, #188
- .long 0xf4648acf // vld1.64 {d24-d25}, [r4]
- .long 0xe28f40c4 // add r4, pc, #196
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3422df6 // vmul.f32 q9, q9, q11
- .long 0xf4646acf // vld1.64 {d22-d23}, [r4]
- .long 0xf3444df8 // vmul.f32 q10, q10, q12
- .long 0xf3400df6 // vmul.f32 q8, q8, q11
- .long 0xf2c76f50 // vmov.f32 q11, #1
- .long 0xf4432acf // vst1.64 {d18-d19}, [r3]
- .long 0xf4424acf // vst1.64 {d20-d21}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf44e0acf // vst1.64 {d16-d17}, [lr]
- .long 0xf44c6acf // vst1.64 {d22-d23}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff13 // bx r3
- .long 0xe2065003 // and r5, r6, #3
- .long 0xe3550001 // cmp r5, #1
- .long 0x0a000011 // beq 46c8 <sk_load_565_dst_vfp4+0x110>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3550002 // cmp r5, #2
- .long 0x0a000005 // beq 46a4 <sk_load_565_dst_vfp4+0xec>
- .long 0xe3550003 // cmp r5, #3
- .long 0x1affffd8 // bne 45f8 <sk_load_565_dst_vfp4+0x40>
- .long 0xe3a05000 // mov r5, #0
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xe2845004 // add r5, r4, #4
- .long 0xf4e5049f // vld1.16 {d16[2]}, [r5 :16]
- .long 0xe5944000 // ldr r4, [r4]
- .long 0xe58d4000 // str r4, [sp]
- .long 0xe1a0400d // mov r4, sp
- .long 0xf4e4183f // vld1.32 {d17[0]}, [r4 :32]
- .long 0xf3d02a31 // vmovl.u16 q9, d17
- .long 0xf3f62121 // vuzp.16 d18, d17
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffcb // b 45f8 <sk_load_565_dst_vfp4+0x40>
- .long 0xe3a05000 // mov r5, #0
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xf4e4041f // vld1.16 {d16[0]}, [r4 :16]
- .long 0xeaffffc7 // b 45f8 <sk_load_565_dst_vfp4+0x40>
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
-
-HIDDEN _sk_gather_565_vfp4
-.globl _sk_gather_565_vfp4
-FUNCTION(_sk_gather_565_vfp4)
-_sk_gather_565_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf2402fc0 // vmax.f32 q9, q8, q0
- .long 0xe283200c // add r2, r3, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2400fc2 // vmax.f32 q8, q8, q1
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf26668e4 // vadd.i32 q11, q11, q10
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe4932004 // ldr r2, [r3], #4
- .long 0xf26848e4 // vadd.i32 q10, q12, q10
- .long 0xf2600fe6 // vmin.f32 q8, q8, q11
- .long 0xf2622fe4 // vmin.f32 q9, q9, q10
- .long 0xf4e34cbf // vld1.32 {d20[]-d21[]}, [r3 :32]
- .long 0xf2c1605f // vmov.i32 q11, #31
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xf26429e0 // vmla.i32 q9, q10, q8
- .long 0xf3c74258 // vmov.i32 q10, #63488
- .long 0xee123b90 // vmov.32 r3, d18[0]
- .long 0xee324b90 // vmov.32 r4, d18[1]
- .long 0xee13eb90 // vmov.32 lr, d19[0]
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xe0823083 // add r3, r2, r3, lsl #1
- .long 0xe0824084 // add r4, r2, r4, lsl #1
- .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
- .long 0xe082308e // add r3, r2, lr, lsl #1
- .long 0xe0822085 // add r2, r2, r5, lsl #1
- .long 0xf4e4045f // vld1.16 {d16[1]}, [r4 :16]
- .long 0xe1d330b0 // ldrh r3, [r3]
- .long 0xe1d220b0 // ldrh r2, [r2]
- .long 0xee203bb0 // vmov.16 d16[2], r3
- .long 0xee202bf0 // vmov.16 d16[3], r2
- .long 0xe3a02e7e // mov r2, #2016
- .long 0xeea22b90 // vdup.32 q9, r2
- .long 0xe28f2048 // add r2, pc, #72
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xf24001f6 // vand q8, q8, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xe28f203c // add r2, pc, #60
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f2044 // add r2, pc, #68
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe28f2048 // add r2, pc, #72
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xf3040df6 // vmul.f32 q0, q10, q11
- .long 0xf3022df8 // vmul.f32 q1, q9, q12
- .long 0xf3004dfa // vmul.f32 q2, q8, q13
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x37842108 // .word 0x37842108
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3a020821 // .word 0x3a020821
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3d042108 // .word 0x3d042108
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_store_565_vfp4
-.globl _sk_store_565_vfp4
-FUNCTION(_sk_store_565_vfp4)
-_sk_store_565_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe28f20c4 // add r2, pc, #196
- .long 0xf2c30f5f // vmov.f32 q8, #31
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf2c3865f // vmov.i32 q12, #1056964608
- .long 0xf2404c70 // vfma.f32 q10, q0, q8
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xf2428c76 // vfma.f32 q12, q1, q11
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xf2442c70 // vfma.f32 q9, q2, q8
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xf3fb07e4 // vcvt.u32.f32 q8, q10
- .long 0xf3fb47e8 // vcvt.u32.f32 q10, q12
- .long 0xf3fb27e2 // vcvt.u32.f32 q9, q9
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xe082208e // add r2, r2, lr, lsl #1
- .long 0xf2eb0570 // vshl.s32 q8, q8, #11
- .long 0xf2e54574 // vshl.s32 q10, q10, #5
- .long 0xf26401f0 // vorr q8, q10, q8
- .long 0xf26001f2 // vorr q8, q8, q9
- .long 0xf3f60220 // vmovn.i32 d16, q8
- .long 0x1a000004 // bne 48b4 <sk_store_565_vfp4+0x84>
- .long 0xf442074f // vst1.16 {d16}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a00000c // beq 48f4 <sk_store_565_vfp4+0xc4>
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000003 // beq 48d8 <sk_store_565_vfp4+0xa8>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1afffff4 // bne 48a4 <sk_store_565_vfp4+0x74>
- .long 0xe2823004 // add r3, r2, #4
- .long 0xf4c3049f // vst1.16 {d16[2]}, [r3 :16]
- .long 0xee903bb0 // vmov.u16 r3, d16[0]
- .long 0xee904bf0 // vmov.u16 r4, d16[1]
- .long 0xee003b90 // vmov.32 d16[0], r3
- .long 0xee204b90 // vmov.32 d16[1], r4
- .long 0xf3f60121 // vuzp.16 d16, d17
- .long 0xf4c2080f // vst1.32 {d16[0]}, [r2]
- .long 0xeaffffeb // b 48a4 <sk_store_565_vfp4+0x74>
- .long 0xf4c2041f // vst1.16 {d16[0]}, [r2 :16]
- .long 0xeaffffe9 // b 48a4 <sk_store_565_vfp4+0x74>
- .long 0xe320f000 // nop {0}
- .long 0x427c0000 // .word 0x427c0000
- .long 0x427c0000 // .word 0x427c0000
- .long 0x427c0000 // .word 0x427c0000
- .long 0x427c0000 // .word 0x427c0000
-
-HIDDEN _sk_load_4444_vfp4
-.globl _sk_load_4444_vfp4
-FUNCTION(_sk_load_4444_vfp4)
-_sk_load_4444_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xe082208e // add r2, r2, lr, lsl #1
- .long 0x1a00001e // bne 49bc <sk_load_4444_vfp4+0xac>
- .long 0xf462074f // vld1.16 {d16}, [r2]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf3c72250 // vmov.i32 q9, #61440
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf3c74050 // vmov.i32 q10, #240
- .long 0xe28f20d0 // add r2, pc, #208
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf2c0625f // vmov.i32 q11, #3840
- .long 0xf2c0805f // vmov.i32 q12, #15
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xf24061f6 // vand q11, q8, q11
- .long 0xf24001f8 // vand q8, q8, q12
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xe28f20bc // add r2, pc, #188
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xe28f20c4 // add r2, pc, #196
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3020df8 // vmul.f32 q0, q9, q12
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf3062dfc // vmul.f32 q1, q11, q14
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf3044dfa // vmul.f32 q2, q10, q13
- .long 0xf3006df2 // vmul.f32 q3, q8, q9
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a000011 // beq 4a10 <sk_load_4444_vfp4+0x100>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000005 // beq 49ec <sk_load_4444_vfp4+0xdc>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffd9 // bne 4944 <sk_load_4444_vfp4+0x34>
- .long 0xe3a03000 // mov r3, #0
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xe2823004 // add r3, r2, #4
- .long 0xf4e3049f // vld1.16 {d16[2]}, [r3 :16]
- .long 0xe5922000 // ldr r2, [r2]
- .long 0xe58d2000 // str r2, [sp]
- .long 0xe1a0200d // mov r2, sp
- .long 0xf4e2183f // vld1.32 {d17[0]}, [r2 :32]
- .long 0xf3d02a31 // vmovl.u16 q9, d17
- .long 0xf3f62121 // vuzp.16 d18, d17
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffcc // b 4944 <sk_load_4444_vfp4+0x34>
- .long 0xe3a03000 // mov r3, #0
- .long 0xee803bb0 // vdup.16 d16, r3
- .long 0xf4e2041f // vld1.16 {d16[0]}, [r2 :16]
- .long 0xeaffffc8 // b 4944 <sk_load_4444_vfp4+0x34>
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
-
-HIDDEN _sk_load_4444_dst_vfp4
-.globl _sk_load_4444_dst_vfp4
-FUNCTION(_sk_load_4444_dst_vfp4)
-_sk_load_4444_dst_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0020492 // mul r2, r2, r4
- .long 0xe0852082 // add r2, r5, r2, lsl #1
- .long 0xe0824083 // add r4, r2, r3, lsl #1
- .long 0xe2802020 // add r2, r0, #32
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a000023 // bne 4b2c <sk_load_4444_dst_vfp4+0xcc>
- .long 0xf464074f // vld1.16 {d16}, [r4]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe28f40e4 // add r4, pc, #228
- .long 0xf3c72250 // vmov.i32 q9, #61440
- .long 0xf464aacf // vld1.64 {d26-d27}, [r4]
- .long 0xf2c0425f // vmov.i32 q10, #3840
- .long 0xe28f40e4 // add r4, pc, #228
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xf3c76050 // vmov.i32 q11, #240
- .long 0xf2c0805f // vmov.i32 q12, #15
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf24061f6 // vand q11, q8, q11
- .long 0xf24001f8 // vand q8, q8, q12
- .long 0xf4648acf // vld1.64 {d24-d25}, [r4]
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xe28f40cc // add r4, pc, #204
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3422dfa // vmul.f32 q9, q9, q13
- .long 0xf464aacf // vld1.64 {d26-d27}, [r4]
- .long 0xe28f40c8 // add r4, pc, #200
- .long 0xf3444df8 // vmul.f32 q10, q10, q12
- .long 0xf4648acf // vld1.64 {d24-d25}, [r4]
- .long 0xf3466dfa // vmul.f32 q11, q11, q13
- .long 0xf3400df8 // vmul.f32 q8, q8, q12
- .long 0xf4432acf // vst1.64 {d18-d19}, [r3]
- .long 0xf4424acf // vst1.64 {d20-d21}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf44e6acf // vst1.64 {d22-d23}, [lr]
- .long 0xf44c0acf // vst1.64 {d16-d17}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff13 // bx r3
- .long 0xe2065003 // and r5, r6, #3
- .long 0xe3550001 // cmp r5, #1
- .long 0x0a000011 // beq 4b80 <sk_load_4444_dst_vfp4+0x120>
- .long 0xf2c00010 // vmov.i32 d16, #0
- .long 0xe3550002 // cmp r5, #2
- .long 0x0a000005 // beq 4b5c <sk_load_4444_dst_vfp4+0xfc>
- .long 0xe3550003 // cmp r5, #3
- .long 0x1affffd4 // bne 4aa0 <sk_load_4444_dst_vfp4+0x40>
- .long 0xe3a05000 // mov r5, #0
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xe2845004 // add r5, r4, #4
- .long 0xf4e5049f // vld1.16 {d16[2]}, [r5 :16]
- .long 0xe5944000 // ldr r4, [r4]
- .long 0xe58d4000 // str r4, [sp]
- .long 0xe1a0400d // mov r4, sp
- .long 0xf4e4183f // vld1.32 {d17[0]}, [r4 :32]
- .long 0xf3d02a31 // vmovl.u16 q9, d17
- .long 0xf3f62121 // vuzp.16 d18, d17
- .long 0xf2f004a2 // vext.8 d16, d16, d18, #4
- .long 0xf2f004a0 // vext.8 d16, d16, d16, #4
- .long 0xeaffffc7 // b 4aa0 <sk_load_4444_dst_vfp4+0x40>
- .long 0xe3a05000 // mov r5, #0
- .long 0xee805bb0 // vdup.16 d16, r5
- .long 0xf4e4041f // vld1.16 {d16[0]}, [r4 :16]
- .long 0xeaffffc3 // b 4aa0 <sk_load_4444_dst_vfp4+0x40>
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
-
-HIDDEN _sk_gather_4444_vfp4
-.globl _sk_gather_4444_vfp4
-FUNCTION(_sk_gather_4444_vfp4)
-_sk_gather_4444_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf2402fc0 // vmax.f32 q9, q8, q0
- .long 0xe283200c // add r2, r3, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2400fc2 // vmax.f32 q8, q8, q1
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf26668e4 // vadd.i32 q11, q11, q10
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe4932004 // ldr r2, [r3], #4
- .long 0xf26848e4 // vadd.i32 q10, q12, q10
- .long 0xf2600fe6 // vmin.f32 q8, q8, q11
- .long 0xf2622fe4 // vmin.f32 q9, q9, q10
- .long 0xf4e34cbf // vld1.32 {d20[]-d21[]}, [r3 :32]
- .long 0xf2c0625f // vmov.i32 q11, #3840
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xf2c0805f // vmov.i32 q12, #15
- .long 0xf26429e0 // vmla.i32 q9, q10, q8
- .long 0xf3c74050 // vmov.i32 q10, #240
- .long 0xee123b90 // vmov.32 r3, d18[0]
- .long 0xee324b90 // vmov.32 r4, d18[1]
- .long 0xee13eb90 // vmov.32 lr, d19[0]
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xf3c72250 // vmov.i32 q9, #61440
- .long 0xe0823083 // add r3, r2, r3, lsl #1
- .long 0xe0824084 // add r4, r2, r4, lsl #1
- .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16]
- .long 0xe082308e // add r3, r2, lr, lsl #1
- .long 0xe0822085 // add r2, r2, r5, lsl #1
- .long 0xf4e4045f // vld1.16 {d16[1]}, [r4 :16]
- .long 0xe1d330b0 // ldrh r3, [r3]
- .long 0xe1d220b0 // ldrh r2, [r2]
- .long 0xee203bb0 // vmov.16 d16[2], r3
- .long 0xee202bf0 // vmov.16 d16[3], r2
- .long 0xe28f2058 // add r2, pc, #88
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xe28f2060 // add r2, pc, #96
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf24021f2 // vand q9, q8, q9
- .long 0xf24041f4 // vand q10, q8, q10
- .long 0xf24061f6 // vand q11, q8, q11
- .long 0xf24001f8 // vand q8, q8, q12
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xe28f2050 // add r2, pc, #80
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xe28f2058 // add r2, pc, #88
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3020df8 // vmul.f32 q0, q9, q12
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf3062dfc // vmul.f32 q1, q11, q14
- .long 0xf3044dfa // vmul.f32 q2, q10, q13
- .long 0xf3006df2 // vmul.f32 q3, q8, q9
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x3b888889 // .word 0x3b888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x37888889 // .word 0x37888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x39888889 // .word 0x39888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
- .long 0x3d888889 // .word 0x3d888889
-
-HIDDEN _sk_store_4444_vfp4
-.globl _sk_store_4444_vfp4
-FUNCTION(_sk_store_4444_vfp4)
-_sk_store_4444_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xf2c20f5e // vmov.f32 q8, #15
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xf2404c70 // vfma.f32 q10, q0, q8
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xf2426c70 // vfma.f32 q11, q1, q8
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xf2c3865f // vmov.i32 q12, #1056964608
- .long 0xf2448c70 // vfma.f32 q12, q2, q8
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xf2462c70 // vfma.f32 q9, q3, q8
- .long 0xf3fb07e4 // vcvt.u32.f32 q8, q10
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xf3fb47e6 // vcvt.u32.f32 q10, q11
- .long 0xe082208e // add r2, r2, lr, lsl #1
- .long 0xf3fb67e8 // vcvt.u32.f32 q11, q12
- .long 0xf2ec0570 // vshl.s32 q8, q8, #12
- .long 0xf3fb27e2 // vcvt.u32.f32 q9, q9
- .long 0xf2e84574 // vshl.s32 q10, q10, #8
- .long 0xf2e46576 // vshl.s32 q11, q11, #4
- .long 0xf26401f0 // vorr q8, q10, q8
- .long 0xf26001f6 // vorr q8, q8, q11
- .long 0xf26001f2 // vorr q8, q8, q9
- .long 0xf3f60220 // vmovn.i32 d16, q8
- .long 0x1a000004 // bne 4d98 <sk_store_4444_vfp4+0x90>
- .long 0xf442074f // vst1.16 {d16}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a00000c // beq 4dd8 <sk_store_4444_vfp4+0xd0>
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000003 // beq 4dbc <sk_store_4444_vfp4+0xb4>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1afffff4 // bne 4d88 <sk_store_4444_vfp4+0x80>
- .long 0xe2823004 // add r3, r2, #4
- .long 0xf4c3049f // vst1.16 {d16[2]}, [r3 :16]
- .long 0xee903bb0 // vmov.u16 r3, d16[0]
- .long 0xee904bf0 // vmov.u16 r4, d16[1]
- .long 0xee003b90 // vmov.32 d16[0], r3
- .long 0xee204b90 // vmov.32 d16[1], r4
- .long 0xf3f60121 // vuzp.16 d16, d17
- .long 0xf4c2080f // vst1.32 {d16[0]}, [r2]
- .long 0xeaffffeb // b 4d88 <sk_store_4444_vfp4+0x80>
- .long 0xf4c2041f // vst1.16 {d16[0]}, [r2 :16]
- .long 0xeaffffe9 // b 4d88 <sk_store_4444_vfp4+0x80>
-
-HIDDEN _sk_load_8888_vfp4
-.globl _sk_load_8888_vfp4
-FUNCTION(_sk_load_8888_vfp4)
-_sk_load_8888_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe082210e // add r2, r2, lr, lsl #2
- .long 0x1a000015 // bne 4e64 <sk_load_8888_vfp4+0x84>
- .long 0xf4620a8f // vld1.32 {d16-d17}, [r2]
- .long 0xf3c7205f // vmov.i32 q9, #255
- .long 0xe28f209c // add r2, pc, #156
- .long 0xf3f84070 // vshr.u32 q10, q8, #8
- .long 0xf3f08070 // vshr.u32 q12, q8, #16
- .long 0xf3e86070 // vshr.u32 q11, q8, #24
- .long 0xf24001f2 // vand q8, q8, q9
- .long 0xf24441f2 // vand q10, q10, q9
- .long 0xf24821f2 // vand q9, q12, q9
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf3066df8 // vmul.f32 q3, q11, q12
- .long 0xf3000df8 // vmul.f32 q0, q8, q12
- .long 0xf3042df8 // vmul.f32 q1, q10, q12
- .long 0xf3024df8 // vmul.f32 q2, q9, q12
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a00000c // beq 4ea4 <sk_load_8888_vfp4+0xc4>
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000005 // beq 4e94 <sk_load_8888_vfp4+0xb4>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffe2 // bne 4e10 <sk_load_8888_vfp4+0x30>
- .long 0xe3a03000 // mov r3, #0
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xe2823008 // add r3, r2, #8
- .long 0xf4e3183f // vld1.32 {d17[0]}, [r3 :32]
- .long 0xedd22b00 // vldr d18, [r2]
- .long 0xf2f008e2 // vext.8 q8, q8, q9, #8
- .long 0xf2f008e0 // vext.8 q8, q8, q8, #8
- .long 0xeaffffda // b 4e10 <sk_load_8888_vfp4+0x30>
- .long 0xe3a03000 // mov r3, #0
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffd6 // b 4e10 <sk_load_8888_vfp4+0x30>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_load_8888_dst_vfp4
-.globl _sk_load_8888_dst_vfp4
-FUNCTION(_sk_load_8888_dst_vfp4)
-_sk_load_8888_dst_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0020492 // mul r2, r2, r4
- .long 0xe0852102 // add r2, r5, r2, lsl #2
- .long 0xe0824103 // add r4, r2, r3, lsl #2
- .long 0xe2802020 // add r2, r0, #32
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a00001a // bne 4f6c <sk_load_8888_dst_vfp4+0xa4>
- .long 0xf4640a8f // vld1.32 {d16-d17}, [r4]
- .long 0xf3c7205f // vmov.i32 q9, #255
- .long 0xe28f40b0 // add r4, pc, #176
- .long 0xf3f84070 // vshr.u32 q10, q8, #8
- .long 0xf3f08070 // vshr.u32 q12, q8, #16
- .long 0xf24061f2 // vand q11, q8, q9
- .long 0xf24441f2 // vand q10, q10, q9
- .long 0xf24821f2 // vand q9, q12, q9
- .long 0xf4648acf // vld1.64 {d24-d25}, [r4]
- .long 0xf3e80070 // vshr.u32 q8, q8, #24
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3466df8 // vmul.f32 q11, q11, q12
- .long 0xf3444df8 // vmul.f32 q10, q10, q12
- .long 0xf3422df8 // vmul.f32 q9, q9, q12
- .long 0xf3400df8 // vmul.f32 q8, q8, q12
- .long 0xf4436acf // vst1.64 {d22-d23}, [r3]
- .long 0xf4424acf // vst1.64 {d20-d21}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf44e2acf // vst1.64 {d18-d19}, [lr]
- .long 0xf44c0acf // vst1.64 {d16-d17}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff13 // bx r3
- .long 0xe2065003 // and r5, r6, #3
- .long 0xe3550001 // cmp r5, #1
- .long 0x0a00000c // beq 4fac <sk_load_8888_dst_vfp4+0xe4>
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe3550002 // cmp r5, #2
- .long 0x0a000005 // beq 4f9c <sk_load_8888_dst_vfp4+0xd4>
- .long 0xe3550003 // cmp r5, #3
- .long 0x1affffdd // bne 4f04 <sk_load_8888_dst_vfp4+0x3c>
- .long 0xe3a05000 // mov r5, #0
- .long 0xeea05b90 // vdup.32 q8, r5
- .long 0xe2845008 // add r5, r4, #8
- .long 0xf4e5183f // vld1.32 {d17[0]}, [r5 :32]
- .long 0xedd42b00 // vldr d18, [r4]
- .long 0xf2f008e2 // vext.8 q8, q8, q9, #8
- .long 0xf2f008e0 // vext.8 q8, q8, q8, #8
- .long 0xeaffffd5 // b 4f04 <sk_load_8888_dst_vfp4+0x3c>
- .long 0xe3a05000 // mov r5, #0
- .long 0xeea05b90 // vdup.32 q8, r5
- .long 0xf4e4083f // vld1.32 {d16[0]}, [r4 :32]
- .long 0xeaffffd1 // b 4f04 <sk_load_8888_dst_vfp4+0x3c>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_gather_8888_vfp4
-.globl _sk_gather_8888_vfp4
-FUNCTION(_sk_gather_8888_vfp4)
-_sk_gather_8888_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf2402fc0 // vmax.f32 q9, q8, q0
- .long 0xe283200c // add r2, r3, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2400fc2 // vmax.f32 q8, q8, q1
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf26668e4 // vadd.i32 q11, q11, q10
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe4932004 // ldr r2, [r3], #4
- .long 0xf26848e4 // vadd.i32 q10, q12, q10
- .long 0xf2600fe6 // vmin.f32 q8, q8, q11
- .long 0xf2622fe4 // vmin.f32 q9, q9, q10
- .long 0xf4e34cbf // vld1.32 {d20[]-d21[]}, [r3 :32]
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xf26429e0 // vmla.i32 q9, q10, q8
- .long 0xee133b90 // vmov.32 r3, d19[0]
- .long 0xee12eb90 // vmov.32 lr, d18[0]
- .long 0xee334b90 // vmov.32 r4, d19[1]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xf3c7205f // vmov.i32 q9, #255
- .long 0xe0823103 // add r3, r2, r3, lsl #2
- .long 0xf4e3183f // vld1.32 {d17[0]}, [r3 :32]
- .long 0xe082310e // add r3, r2, lr, lsl #2
- .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
- .long 0xe0823104 // add r3, r2, r4, lsl #2
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xf4e318bf // vld1.32 {d17[1]}, [r3 :32]
- .long 0xf4e208bf // vld1.32 {d16[1]}, [r2 :32]
- .long 0xe28f2044 // add r2, pc, #68
- .long 0xf3f84070 // vshr.u32 q10, q8, #8
- .long 0xf24061f2 // vand q11, q8, q9
- .long 0xf3e88070 // vshr.u32 q12, q8, #24
- .long 0xf3f00070 // vshr.u32 q8, q8, #16
- .long 0xf24441f2 // vand q10, q10, q9
- .long 0xf24001f2 // vand q8, q8, q9
- .long 0xf3fb2664 // vcvt.f32.s32 q9, q10
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3fb8668 // vcvt.f32.s32 q12, q12
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3060df4 // vmul.f32 q0, q11, q10
- .long 0xf3086df4 // vmul.f32 q3, q12, q10
- .long 0xf3022df4 // vmul.f32 q1, q9, q10
- .long 0xf3004df4 // vmul.f32 q2, q8, q10
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_store_8888_vfp4
-.globl _sk_store_8888_vfp4
-FUNCTION(_sk_store_8888_vfp4)
-_sk_store_8888_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe28f20bc // add r2, pc, #188
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf2444c72 // vfma.f32 q10, q2, q9
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2426c72 // vfma.f32 q11, q1, q9
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2c3865f // vmov.i32 q12, #1056964608
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xf2400c72 // vfma.f32 q8, q0, q9
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xf2468c72 // vfma.f32 q12, q3, q9
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xf3fb27e4 // vcvt.u32.f32 q9, q10
- .long 0xf3fb47e6 // vcvt.u32.f32 q10, q11
- .long 0xf3fb07e0 // vcvt.u32.f32 q8, q8
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe082210e // add r2, r2, lr, lsl #2
- .long 0xf3fb67e8 // vcvt.u32.f32 q11, q12
- .long 0xf2e84574 // vshl.s32 q10, q10, #8
- .long 0xf2f02572 // vshl.s32 q9, q9, #16
- .long 0xf26401f0 // vorr q8, q10, q8
- .long 0xf2f84576 // vshl.s32 q10, q11, #24
- .long 0xf26001f2 // vorr q8, q8, q9
- .long 0xf26001f4 // vorr q8, q8, q10
- .long 0x1a000004 // bne 5140 <sk_store_8888_vfp4+0x90>
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a000007 // beq 516c <sk_store_8888_vfp4+0xbc>
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000003 // beq 5164 <sk_store_8888_vfp4+0xb4>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1afffff4 // bne 5130 <sk_store_8888_vfp4+0x80>
- .long 0xe2823008 // add r3, r2, #8
- .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32]
- .long 0xedc20b00 // vstr d16, [r2]
- .long 0xeafffff0 // b 5130 <sk_store_8888_vfp4+0x80>
- .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffee // b 5130 <sk_store_8888_vfp4+0x80>
- .long 0xe320f000 // nop {0}
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
-
-HIDDEN _sk_load_bgra_vfp4
-.globl _sk_load_bgra_vfp4
-FUNCTION(_sk_load_bgra_vfp4)
-_sk_load_bgra_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe082210e // add r2, r2, lr, lsl #2
- .long 0x1a000015 // bne 520c <sk_load_bgra_vfp4+0x84>
- .long 0xf4620a8f // vld1.32 {d16-d17}, [r2]
- .long 0xf3c7205f // vmov.i32 q9, #255
- .long 0xe28f209c // add r2, pc, #156
- .long 0xf3f04070 // vshr.u32 q10, q8, #16
- .long 0xf3f88070 // vshr.u32 q12, q8, #8
- .long 0xf3e86070 // vshr.u32 q11, q8, #24
- .long 0xf24001f2 // vand q8, q8, q9
- .long 0xf24441f2 // vand q10, q10, q9
- .long 0xf24821f2 // vand q9, q12, q9
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf3066df8 // vmul.f32 q3, q11, q12
- .long 0xf3004df8 // vmul.f32 q2, q8, q12
- .long 0xf3040df8 // vmul.f32 q0, q10, q12
- .long 0xf3022df8 // vmul.f32 q1, q9, q12
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a00000c // beq 524c <sk_load_bgra_vfp4+0xc4>
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000005 // beq 523c <sk_load_bgra_vfp4+0xb4>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1affffe2 // bne 51b8 <sk_load_bgra_vfp4+0x30>
- .long 0xe3a03000 // mov r3, #0
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xe2823008 // add r3, r2, #8
- .long 0xf4e3183f // vld1.32 {d17[0]}, [r3 :32]
- .long 0xedd22b00 // vldr d18, [r2]
- .long 0xf2f008e2 // vext.8 q8, q8, q9, #8
- .long 0xf2f008e0 // vext.8 q8, q8, q8, #8
- .long 0xeaffffda // b 51b8 <sk_load_bgra_vfp4+0x30>
- .long 0xe3a03000 // mov r3, #0
- .long 0xeea03b90 // vdup.32 q8, r3
- .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffd6 // b 51b8 <sk_load_bgra_vfp4+0x30>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_load_bgra_dst_vfp4
-.globl _sk_load_bgra_dst_vfp4
-FUNCTION(_sk_load_bgra_dst_vfp4)
-_sk_load_bgra_dst_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0020492 // mul r2, r2, r4
- .long 0xe0852102 // add r2, r5, r2, lsl #2
- .long 0xe0824103 // add r4, r2, r3, lsl #2
- .long 0xe2802020 // add r2, r0, #32
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a00001a // bne 5314 <sk_load_bgra_dst_vfp4+0xa4>
- .long 0xf4640a8f // vld1.32 {d16-d17}, [r4]
- .long 0xf3c7205f // vmov.i32 q9, #255
- .long 0xe28f40b0 // add r4, pc, #176
- .long 0xf3f84070 // vshr.u32 q10, q8, #8
- .long 0xf3f08070 // vshr.u32 q12, q8, #16
- .long 0xf24061f2 // vand q11, q8, q9
- .long 0xf24441f2 // vand q10, q10, q9
- .long 0xf24821f2 // vand q9, q12, q9
- .long 0xf4648acf // vld1.64 {d24-d25}, [r4]
- .long 0xf3e80070 // vshr.u32 q8, q8, #24
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3466df8 // vmul.f32 q11, q11, q12
- .long 0xf3444df8 // vmul.f32 q10, q10, q12
- .long 0xf3422df8 // vmul.f32 q9, q9, q12
- .long 0xf3400df8 // vmul.f32 q8, q8, q12
- .long 0xf44e6acf // vst1.64 {d22-d23}, [lr]
- .long 0xf4424acf // vst1.64 {d20-d21}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf4432acf // vst1.64 {d18-d19}, [r3]
- .long 0xf44c0acf // vst1.64 {d16-d17}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff13 // bx r3
- .long 0xe2065003 // and r5, r6, #3
- .long 0xe3550001 // cmp r5, #1
- .long 0x0a00000c // beq 5354 <sk_load_bgra_dst_vfp4+0xe4>
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe3550002 // cmp r5, #2
- .long 0x0a000005 // beq 5344 <sk_load_bgra_dst_vfp4+0xd4>
- .long 0xe3550003 // cmp r5, #3
- .long 0x1affffdd // bne 52ac <sk_load_bgra_dst_vfp4+0x3c>
- .long 0xe3a05000 // mov r5, #0
- .long 0xeea05b90 // vdup.32 q8, r5
- .long 0xe2845008 // add r5, r4, #8
- .long 0xf4e5183f // vld1.32 {d17[0]}, [r5 :32]
- .long 0xedd42b00 // vldr d18, [r4]
- .long 0xf2f008e2 // vext.8 q8, q8, q9, #8
- .long 0xf2f008e0 // vext.8 q8, q8, q8, #8
- .long 0xeaffffd5 // b 52ac <sk_load_bgra_dst_vfp4+0x3c>
- .long 0xe3a05000 // mov r5, #0
- .long 0xeea05b90 // vdup.32 q8, r5
- .long 0xf4e4083f // vld1.32 {d16[0]}, [r4 :32]
- .long 0xeaffffd1 // b 52ac <sk_load_bgra_dst_vfp4+0x3c>
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_gather_bgra_vfp4
-.globl _sk_gather_bgra_vfp4
-FUNCTION(_sk_gather_bgra_vfp4)
-_sk_gather_bgra_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf2402fc0 // vmax.f32 q9, q8, q0
- .long 0xe283200c // add r2, r3, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2400fc2 // vmax.f32 q8, q8, q1
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf26668e4 // vadd.i32 q11, q11, q10
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe4932004 // ldr r2, [r3], #4
- .long 0xf26848e4 // vadd.i32 q10, q12, q10
- .long 0xf2600fe6 // vmin.f32 q8, q8, q11
- .long 0xf2622fe4 // vmin.f32 q9, q9, q10
- .long 0xf4e34cbf // vld1.32 {d20[]-d21[]}, [r3 :32]
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xf26429e0 // vmla.i32 q9, q10, q8
- .long 0xee133b90 // vmov.32 r3, d19[0]
- .long 0xee12eb90 // vmov.32 lr, d18[0]
- .long 0xee334b90 // vmov.32 r4, d19[1]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xf3c7205f // vmov.i32 q9, #255
- .long 0xe0823103 // add r3, r2, r3, lsl #2
- .long 0xf4e3183f // vld1.32 {d17[0]}, [r3 :32]
- .long 0xe082310e // add r3, r2, lr, lsl #2
- .long 0xf4e3083f // vld1.32 {d16[0]}, [r3 :32]
- .long 0xe0823104 // add r3, r2, r4, lsl #2
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xf4e318bf // vld1.32 {d17[1]}, [r3 :32]
- .long 0xf4e208bf // vld1.32 {d16[1]}, [r2 :32]
- .long 0xe28f2044 // add r2, pc, #68
- .long 0xf3f04070 // vshr.u32 q10, q8, #16
- .long 0xf24061f2 // vand q11, q8, q9
- .long 0xf3e88070 // vshr.u32 q12, q8, #24
- .long 0xf3f80070 // vshr.u32 q8, q8, #8
- .long 0xf24441f2 // vand q10, q10, q9
- .long 0xf24001f2 // vand q8, q8, q9
- .long 0xf3fb2664 // vcvt.f32.s32 q9, q10
- .long 0xf4624acf // vld1.64 {d20-d21}, [r2]
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3fb8668 // vcvt.f32.s32 q12, q12
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3064df4 // vmul.f32 q2, q11, q10
- .long 0xf3086df4 // vmul.f32 q3, q12, q10
- .long 0xf3020df4 // vmul.f32 q0, q9, q10
- .long 0xf3002df4 // vmul.f32 q1, q8, q10
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
- .long 0x3b808081 // .word 0x3b808081
-
-HIDDEN _sk_store_bgra_vfp4
-.globl _sk_store_bgra_vfp4
-FUNCTION(_sk_store_bgra_vfp4)
-_sk_store_bgra_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe28f20bc // add r2, pc, #188
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf2424c72 // vfma.f32 q10, q1, q9
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2406c72 // vfma.f32 q11, q0, q9
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2c3865f // vmov.i32 q12, #1056964608
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xf2440c72 // vfma.f32 q8, q2, q9
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xf2468c72 // vfma.f32 q12, q3, q9
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xf3fb27e4 // vcvt.u32.f32 q9, q10
- .long 0xf3fb47e6 // vcvt.u32.f32 q10, q11
- .long 0xf3fb07e0 // vcvt.u32.f32 q8, q8
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe082210e // add r2, r2, lr, lsl #2
- .long 0xf3fb67e8 // vcvt.u32.f32 q11, q12
- .long 0xf2f04574 // vshl.s32 q10, q10, #16
- .long 0xf2e82572 // vshl.s32 q9, q9, #8
- .long 0xf26401f0 // vorr q8, q10, q8
- .long 0xf2f84576 // vshl.s32 q10, q11, #24
- .long 0xf26001f2 // vorr q8, q8, q9
- .long 0xf26001f4 // vorr q8, q8, q10
- .long 0x1a000004 // bne 54e8 <sk_store_bgra_vfp4+0x90>
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe20c3003 // and r3, ip, #3
- .long 0xe3530001 // cmp r3, #1
- .long 0x0a000007 // beq 5514 <sk_store_bgra_vfp4+0xbc>
- .long 0xe3530002 // cmp r3, #2
- .long 0x0a000003 // beq 550c <sk_store_bgra_vfp4+0xb4>
- .long 0xe3530003 // cmp r3, #3
- .long 0x1afffff4 // bne 54d8 <sk_store_bgra_vfp4+0x80>
- .long 0xe2823008 // add r3, r2, #8
- .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32]
- .long 0xedc20b00 // vstr d16, [r2]
- .long 0xeafffff0 // b 54d8 <sk_store_bgra_vfp4+0x80>
- .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32]
- .long 0xeaffffee // b 54d8 <sk_store_bgra_vfp4+0x80>
- .long 0xe320f000 // nop {0}
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
- .long 0x437f0000 // .word 0x437f0000
-
-HIDDEN _sk_load_f16_vfp4
-.globl _sk_load_f16_vfp4
-FUNCTION(_sk_load_f16_vfp4)
-_sk_load_f16_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901004 // ldmib r0, {r2, ip}
- .long 0xe5934000 // ldr r4, [r3]
- .long 0xe5933004 // ldr r3, [r3, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020293 // mul r2, r3, r2
- .long 0xe0842182 // add r2, r4, r2, lsl #3
- .long 0xe082318e // add r3, r2, lr, lsl #3
- .long 0x1a000008 // bne 5580 <sk_load_f16_vfp4+0x50>
- .long 0xf463004f // vld4.16 {d16-d19}, [r3]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf3b60720 // vcvt.f32.f16 q0, d16
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3b62721 // vcvt.f32.f16 q1, d17
- .long 0xf3b64722 // vcvt.f32.f16 q2, d18
- .long 0xf3b66723 // vcvt.f32.f16 q3, d19
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xf4e3070f // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]
- .long 0xe35c0001 // cmp ip, #1
- .long 0x0afffff4 // beq 5560 <sk_load_f16_vfp4+0x30>
- .long 0xe2832008 // add r2, r3, #8
- .long 0xe35c0003 // cmp ip, #3
- .long 0xf4e2074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r2]
- .long 0x3afffff0 // bcc 5560 <sk_load_f16_vfp4+0x30>
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf4e2078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2]
- .long 0xeaffffed // b 5560 <sk_load_f16_vfp4+0x30>
-
-HIDDEN _sk_load_f16_dst_vfp4
-.globl _sk_load_f16_dst_vfp4
-FUNCTION(_sk_load_f16_dst_vfp4)
-_sk_load_f16_dst_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900068 // ldm r0, {r3, r5, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0020592 // mul r2, r2, r5
- .long 0xe0842182 // add r2, r4, r2, lsl #3
- .long 0xe0825183 // add r5, r2, r3, lsl #3
- .long 0xe2802020 // add r2, r0, #32
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a00000d // bne 5618 <sk_load_f16_dst_vfp4+0x70>
- .long 0xf465004f // vld4.16 {d16-d19}, [r5]
- .long 0xf3f64720 // vcvt.f32.f16 q10, d16
- .long 0xf3f66721 // vcvt.f32.f16 q11, d17
- .long 0xf3f68722 // vcvt.f32.f16 q12, d18
- .long 0xf3f60723 // vcvt.f32.f16 q8, d19
- .long 0xf4434acf // vst1.64 {d20-d21}, [r3]
- .long 0xf4426acf // vst1.64 {d22-d23}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf44e8acf // vst1.64 {d24-d25}, [lr]
- .long 0xf44c0acf // vst1.64 {d16-d17}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff13 // bx r3
- .long 0xf4e5070f // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r5]
- .long 0xe3560001 // cmp r6, #1
- .long 0x0affffef // beq 55e4 <sk_load_f16_dst_vfp4+0x3c>
- .long 0xe2854008 // add r4, r5, #8
- .long 0xe3560003 // cmp r6, #3
- .long 0xf4e4074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r4]
- .long 0x3affffeb // bcc 55e4 <sk_load_f16_dst_vfp4+0x3c>
- .long 0xe2854010 // add r4, r5, #16
- .long 0xf4e4078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r4]
- .long 0xeaffffe8 // b 55e4 <sk_load_f16_dst_vfp4+0x3c>
-
-HIDDEN _sk_gather_f16_vfp4
-.globl _sk_gather_f16_vfp4
-FUNCTION(_sk_gather_f16_vfp4)
-_sk_gather_f16_vfp4:
- .long 0xe92d4c10 // push {r4, sl, fp, lr}
- .long 0xe28db008 // add fp, sp, #8
- .long 0xe24dd030 // sub sp, sp, #48
- .long 0xe7c4d01f // bfc sp, #0, #5
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf2402fc0 // vmax.f32 q9, q8, q0
- .long 0xe282300c // add r3, r2, #12
- .long 0xf2400fc2 // vmax.f32 q8, q8, q1
- .long 0xf4e36cbf // vld1.32 {d22[]-d23[]}, [r3 :32]
- .long 0xe2823008 // add r3, r2, #8
- .long 0xf26668e4 // vadd.i32 q11, q11, q10
- .long 0xf4e38cbf // vld1.32 {d24[]-d25[]}, [r3 :32]
- .long 0xe4923004 // ldr r3, [r2], #4
- .long 0xf26848e4 // vadd.i32 q10, q12, q10
- .long 0xf2600fe6 // vmin.f32 q8, q8, q11
- .long 0xf2622fe4 // vmin.f32 q9, q9, q10
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xf26429e0 // vmla.i32 q9, q10, q8
- .long 0xee33cb90 // vmov.32 ip, d19[1]
- .long 0xee322b90 // vmov.32 r2, d18[1]
- .long 0xee13eb90 // vmov.32 lr, d19[0]
- .long 0xee124b90 // vmov.32 r4, d18[0]
- .long 0xe083c18c // add ip, r3, ip, lsl #3
- .long 0xe0832182 // add r2, r3, r2, lsl #3
- .long 0xe083e18e // add lr, r3, lr, lsl #3
- .long 0xeddc3b00 // vldr d19, [ip]
- .long 0xedd21b00 // vldr d17, [r2]
- .long 0xe0832184 // add r2, r3, r4, lsl #3
- .long 0xedde2b00 // vldr d18, [lr]
- .long 0xedd20b00 // vldr d16, [r2]
- .long 0xe1a0200d // mov r2, sp
- .long 0xe3823010 // orr r3, r2, #16
- .long 0xf4432aef // vst1.64 {d18-d19}, [r3 :128]
- .long 0xf4420aef // vst1.64 {d16-d17}, [r2 :128]
- .long 0xf462005f // vld4.16 {d16-d19}, [r2 :64]
- .long 0xf3b60720 // vcvt.f32.f16 q0, d16
- .long 0xf3b62721 // vcvt.f32.f16 q1, d17
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3b64722 // vcvt.f32.f16 q2, d18
- .long 0xf3b66723 // vcvt.f32.f16 q3, d19
- .long 0xe12fff32 // blx r2
- .long 0xe24bd008 // sub sp, fp, #8
- .long 0xe8bd8c10 // pop {r4, sl, fp, pc}
-
-HIDDEN _sk_store_f16_vfp4
-.globl _sk_store_f16_vfp4
-FUNCTION(_sk_store_f16_vfp4)
-_sk_store_f16_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf3f63606 // vcvt.f16.f32 d19, q3
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xf3f62604 // vcvt.f16.f32 d18, q2
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xf3f61602 // vcvt.f16.f32 d17, q1
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xf3f60600 // vcvt.f16.f32 d16, q0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xe0842182 // add r2, r4, r2, lsl #3
- .long 0xe082218e // add r2, r2, lr, lsl #3
- .long 0x1a000004 // bne 5750 <sk_store_f16_vfp4+0x50>
- .long 0xf442004f // vst4.16 {d16-d19}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe35c0001 // cmp ip, #1
- .long 0xf4c2070f // vst4.16 {d16[0],d17[0],d18[0],d19[0]}, [r2]
- .long 0x0afffff8 // beq 5740 <sk_store_f16_vfp4+0x40>
- .long 0xe2823008 // add r3, r2, #8
- .long 0xe35c0003 // cmp ip, #3
- .long 0xf4c3074f // vst4.16 {d16[1],d17[1],d18[1],d19[1]}, [r3]
- .long 0x3afffff4 // bcc 5740 <sk_store_f16_vfp4+0x40>
- .long 0xe2822010 // add r2, r2, #16
- .long 0xf4c2078f // vst4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2]
- .long 0xeafffff1 // b 5740 <sk_store_f16_vfp4+0x40>
-
-HIDDEN _sk_load_u16_be_vfp4
-.globl _sk_load_u16_be_vfp4
-FUNCTION(_sk_load_u16_be_vfp4)
-_sk_load_u16_be_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901004 // ldmib r0, {r2, ip}
- .long 0xe5934000 // ldr r4, [r3]
- .long 0xe5933004 // ldr r3, [r3, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020293 // mul r2, r3, r2
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xe082318e // add r3, r2, lr, lsl #3
- .long 0x1a00001e // bne 5820 <sk_load_u16_be_vfp4+0xa8>
- .long 0xf463004f // vld4.16 {d16-d19}, [r3]
- .long 0xf3d84030 // vshr.u16 d20, d16, #8
- .long 0xe28f2094 // add r2, pc, #148
- .long 0xf2d85530 // vshl.s16 d21, d16, #8
- .long 0xf3d86031 // vshr.u16 d22, d17, #8
- .long 0xf2d87531 // vshl.s16 d23, d17, #8
- .long 0xf2d80533 // vshl.s16 d16, d19, #8
- .long 0xf3d8a033 // vshr.u16 d26, d19, #8
- .long 0xf3d88032 // vshr.u16 d24, d18, #8
- .long 0xf2d89532 // vshl.s16 d25, d18, #8
- .long 0xf26511b4 // vorr d17, d21, d20
- .long 0xf26721b6 // vorr d18, d23, d22
- .long 0xf26931b8 // vorr d19, d25, d24
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xf26001ba // vorr d16, d16, d26
- .long 0xf3d04a31 // vmovl.u16 q10, d17
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf3d06a32 // vmovl.u16 q11, d18
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3d02a33 // vmovl.u16 q9, d19
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf3fb46e4 // vcvt.f32.u32 q10, q10
- .long 0xf3fb66e6 // vcvt.f32.u32 q11, q11
- .long 0xf3fb26e2 // vcvt.f32.u32 q9, q9
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3040df8 // vmul.f32 q0, q10, q12
- .long 0xf3062df8 // vmul.f32 q1, q11, q12
- .long 0xf3024df8 // vmul.f32 q2, q9, q12
- .long 0xf3006df8 // vmul.f32 q3, q8, q12
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xf4e3070f // vld4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]
- .long 0xe35c0001 // cmp ip, #1
- .long 0x0affffde // beq 57a8 <sk_load_u16_be_vfp4+0x30>
- .long 0xe2832008 // add r2, r3, #8
- .long 0xe35c0003 // cmp ip, #3
- .long 0xf4e2074f // vld4.16 {d16[1],d17[1],d18[1],d19[1]}, [r2]
- .long 0x3affffda // bcc 57a8 <sk_load_u16_be_vfp4+0x30>
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf4e2078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2]
- .long 0xeaffffd7 // b 57a8 <sk_load_u16_be_vfp4+0x30>
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
-
-HIDDEN _sk_load_rgb_u16_be_vfp4
-.globl _sk_load_rgb_u16_be_vfp4
-FUNCTION(_sk_load_rgb_u16_be_vfp4)
-_sk_load_rgb_u16_be_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901004 // ldmib r0, {r2, ip}
- .long 0xe5934000 // ldr r4, [r3]
- .long 0xe5933004 // ldr r3, [r3, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020293 // mul r2, r3, r2
- .long 0xe08e308e // add r3, lr, lr, lsl #1
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xe0823083 // add r3, r2, r3, lsl #1
- .long 0x1a00001a // bne 58f4 <sk_load_rgb_u16_be_vfp4+0x9c>
- .long 0xf463044f // vld3.16 {d16-d18}, [r3]
- .long 0xf3d84030 // vshr.u16 d20, d16, #8
- .long 0xe28f2088 // add r2, pc, #136
- .long 0xf2d85530 // vshl.s16 d21, d16, #8
- .long 0xf3d86031 // vshr.u16 d22, d17, #8
- .long 0xf2d87531 // vshl.s16 d23, d17, #8
- .long 0xf2d80532 // vshl.s16 d16, d18, #8
- .long 0xf3d88032 // vshr.u16 d24, d18, #8
- .long 0xf26721b6 // vorr d18, d23, d22
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf26511b4 // vorr d17, d21, d20
- .long 0xe28f2074 // add r2, pc, #116
- .long 0xf26001b8 // vorr d16, d16, d24
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xf3d02a32 // vmovl.u16 q9, d18
- .long 0xf3d04a31 // vmovl.u16 q10, d17
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf3fb26e2 // vcvt.f32.u32 q9, q9
- .long 0xf3fb46e4 // vcvt.f32.u32 q10, q10
- .long 0xf3fb06e0 // vcvt.f32.u32 q8, q8
- .long 0xf3022df6 // vmul.f32 q1, q9, q11
- .long 0xf3040df6 // vmul.f32 q0, q10, q11
- .long 0xf3004df6 // vmul.f32 q2, q8, q11
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xf4e3060f // vld3.16 {d16[0],d17[0],d18[0]}, [r3]
- .long 0xe35c0001 // cmp ip, #1
- .long 0x0affffe2 // beq 588c <sk_load_rgb_u16_be_vfp4+0x34>
- .long 0xe2832006 // add r2, r3, #6
- .long 0xe35c0003 // cmp ip, #3
- .long 0xf4e2064f // vld3.16 {d16[1],d17[1],d18[1]}, [r2]
- .long 0x3affffde // bcc 588c <sk_load_rgb_u16_be_vfp4+0x34>
- .long 0xe283200c // add r2, r3, #12
- .long 0xf4e2068f // vld3.16 {d16[2],d17[2],d18[2]}, [r2]
- .long 0xeaffffdb // b 588c <sk_load_rgb_u16_be_vfp4+0x34>
- .long 0xe320f000 // nop {0}
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
- .long 0x37800080 // .word 0x37800080
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_store_u16_be_vfp4
-.globl _sk_store_u16_be_vfp4
-FUNCTION(_sk_store_u16_be_vfp4)
-_sk_store_u16_be_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe28f20d4 // add r2, pc, #212
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf2440c72 // vfma.f32 q8, q2, q9
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xf2424c72 // vfma.f32 q10, q1, q9
- .long 0xe9901004 // ldmib r0, {r2, ip}
- .long 0xf2466c72 // vfma.f32 q11, q3, q9
- .long 0xe5934000 // ldr r4, [r3]
- .long 0xe5933004 // ldr r3, [r3, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xf2c3865f // vmov.i32 q12, #1056964608
- .long 0xf2408c72 // vfma.f32 q12, q0, q9
- .long 0xe0020293 // mul r2, r3, r2
- .long 0xf3fb07e0 // vcvt.u32.f32 q8, q8
- .long 0xf3fb27e4 // vcvt.u32.f32 q9, q10
- .long 0xf3fb47e6 // vcvt.u32.f32 q10, q11
- .long 0xe0842082 // add r2, r4, r2, lsl #1
- .long 0xf3f60220 // vmovn.i32 d16, q8
- .long 0xe082318e // add r3, r2, lr, lsl #3
- .long 0xf3fb67e8 // vcvt.u32.f32 q11, q12
- .long 0xf3f62222 // vmovn.i32 d18, q9
- .long 0xf3f63224 // vmovn.i32 d19, q10
- .long 0xf3d85030 // vshr.u16 d21, d16, #8
- .long 0xf3d81033 // vshr.u16 d17, d19, #8
- .long 0xf3f64226 // vmovn.i32 d20, q11
- .long 0xf2d86530 // vshl.s16 d22, d16, #8
- .long 0xf2d80533 // vshl.s16 d16, d19, #8
- .long 0xf3d87032 // vshr.u16 d23, d18, #8
- .long 0xf2d88532 // vshl.s16 d24, d18, #8
- .long 0xf26031b1 // vorr d19, d16, d17
- .long 0xf26621b5 // vorr d18, d22, d21
- .long 0xf3d89034 // vshr.u16 d25, d20, #8
- .long 0xf2d84534 // vshl.s16 d20, d20, #8
- .long 0xf26811b7 // vorr d17, d24, d23
- .long 0xf26401b9 // vorr d16, d20, d25
- .long 0x1a000004 // bne 59f8 <sk_store_u16_be_vfp4+0xb8>
- .long 0xf443004f // vst4.16 {d16-d19}, [r3]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe35c0001 // cmp ip, #1
- .long 0xf4c3070f // vst4.16 {d16[0],d17[0],d18[0],d19[0]}, [r3]
- .long 0x0afffff8 // beq 59e8 <sk_store_u16_be_vfp4+0xa8>
- .long 0xe2832008 // add r2, r3, #8
- .long 0xe35c0003 // cmp ip, #3
- .long 0xf4c2074f // vst4.16 {d16[1],d17[1],d18[1],d19[1]}, [r2]
- .long 0x3afffff4 // bcc 59e8 <sk_store_u16_be_vfp4+0xa8>
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf4c2078f // vst4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2]
- .long 0xeafffff1 // b 59e8 <sk_store_u16_be_vfp4+0xa8>
- .long 0x477fff00 // .word 0x477fff00
- .long 0x477fff00 // .word 0x477fff00
- .long 0x477fff00 // .word 0x477fff00
- .long 0x477fff00 // .word 0x477fff00
-
-HIDDEN _sk_load_f32_vfp4
-.globl _sk_load_f32_vfp4
-FUNCTION(_sk_load_f32_vfp4)
-_sk_load_f32_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe082220e // add r2, r2, lr, lsl #4
- .long 0x1a000009 // bne 5a84 <sk_load_f32_vfp4+0x54>
- .long 0xf462018d // vld4.32 {d16,d18,d20,d22}, [r2]!
- .long 0xf462118f // vld4.32 {d17,d19,d21,d23}, [r2]
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xf22441f4 // vorr q2, q10, q10
- .long 0xf22661f6 // vorr q3, q11, q11
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xf4a20b4f // vld4.32 {d0[0],d2[0],d4[0],d6[0]}, [r2]
- .long 0xe35c0001 // cmp ip, #1
- .long 0x0afffff8 // beq 5a74 <sk_load_f32_vfp4+0x44>
- .long 0xe2823010 // add r3, r2, #16
- .long 0xe35c0003 // cmp ip, #3
- .long 0xf4a30bcf // vld4.32 {d0[1],d2[1],d4[1],d6[1]}, [r3]
- .long 0x3afffff4 // bcc 5a74 <sk_load_f32_vfp4+0x44>
- .long 0xe2822020 // add r2, r2, #32
- .long 0xf4a21b4f // vld4.32 {d1[0],d3[0],d5[0],d7[0]}, [r2]
- .long 0xeafffff1 // b 5a74 <sk_load_f32_vfp4+0x44>
-
-HIDDEN _sk_load_f32_dst_vfp4
-.globl _sk_load_f32_dst_vfp4
-FUNCTION(_sk_load_f32_dst_vfp4)
-_sk_load_f32_dst_vfp4:
- .long 0xe92d4070 // push {r4, r5, r6, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280c040 // add ip, r0, #64
- .long 0xe8900058 // ldm r0, {r3, r4, r6}
- .long 0xe280e030 // add lr, r0, #48
- .long 0xe5925000 // ldr r5, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe3560000 // cmp r6, #0
- .long 0xe0020492 // mul r2, r2, r4
- .long 0xe0852102 // add r2, r5, r2, lsl #2
- .long 0xe0824203 // add r4, r2, r3, lsl #4
- .long 0xe2802020 // add r2, r0, #32
- .long 0xe2803010 // add r3, r0, #16
- .long 0x1a00000e // bne 5b20 <sk_load_f32_dst_vfp4+0x74>
- .long 0xf464818d // vld4.32 {d24,d26,d28,d30}, [r4]!
- .long 0xf464918f // vld4.32 {d25,d27,d29,d31}, [r4]
- .long 0xf26801f8 // vorr q8, q12, q12
- .long 0xf26a21fa // vorr q9, q13, q13
- .long 0xf26c41fc // vorr q10, q14, q14
- .long 0xf26e61fe // vorr q11, q15, q15
- .long 0xf4430acf // vst1.64 {d16-d17}, [r3]
- .long 0xf4422acf // vst1.64 {d18-d19}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xf44e4acf // vst1.64 {d20-d21}, [lr]
- .long 0xf44c6acf // vst1.64 {d22-d23}, [ip]
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe8bd4070 // pop {r4, r5, r6, lr}
- .long 0xe12fff13 // bx r3
- .long 0xf4e40b4f // vld4.32 {d16[0],d18[0],d20[0],d22[0]}, [r4]
- .long 0xe3560001 // cmp r6, #1
- .long 0x0afffff3 // beq 5afc <sk_load_f32_dst_vfp4+0x50>
- .long 0xe2845010 // add r5, r4, #16
- .long 0xe3560003 // cmp r6, #3
- .long 0xf4e50bcf // vld4.32 {d16[1],d18[1],d20[1],d22[1]}, [r5]
- .long 0x3affffef // bcc 5afc <sk_load_f32_dst_vfp4+0x50>
- .long 0xe2844020 // add r4, r4, #32
- .long 0xf4e41b4f // vld4.32 {d17[0],d19[0],d21[0],d23[0]}, [r4]
- .long 0xeaffffec // b 5afc <sk_load_f32_dst_vfp4+0x50>
-
-HIDDEN _sk_store_f32_vfp4
-.globl _sk_store_f32_vfp4
-FUNCTION(_sk_store_f32_vfp4)
-_sk_store_f32_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe590e000 // ldr lr, [r0]
- .long 0xe9901008 // ldmib r0, {r3, ip}
- .long 0xe5924000 // ldr r4, [r2]
- .long 0xe5922004 // ldr r2, [r2, #4]
- .long 0xe35c0000 // cmp ip, #0
- .long 0xe0020392 // mul r2, r2, r3
- .long 0xe0842102 // add r2, r4, r2, lsl #2
- .long 0xe082220e // add r2, r2, lr, lsl #4
- .long 0x1a000005 // bne 5b8c <sk_store_f32_vfp4+0x44>
- .long 0xf402018d // vst4.32 {d0,d2,d4,d6}, [r2]!
- .long 0xf402118f // vst4.32 {d1,d3,d5,d7}, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff12 // bx r2
- .long 0xe35c0001 // cmp ip, #1
- .long 0xf4820b4f // vst4.32 {d0[0],d2[0],d4[0],d6[0]}, [r2]
- .long 0x0afffff8 // beq 5b7c <sk_store_f32_vfp4+0x34>
- .long 0xe2823010 // add r3, r2, #16
- .long 0xe35c0003 // cmp ip, #3
- .long 0xf4830bcf // vst4.32 {d0[1],d2[1],d4[1],d6[1]}, [r3]
- .long 0x3afffff4 // bcc 5b7c <sk_store_f32_vfp4+0x34>
- .long 0xe2822020 // add r2, r2, #32
- .long 0xf4821b4f // vst4.32 {d1[0],d3[0],d5[0],d7[0]}, [r2]
- .long 0xeafffff1 // b 5b7c <sk_store_f32_vfp4+0x34>
- .long 0xe320f000 // nop {0}
-
-HIDDEN _sk_repeat_x_vfp4
-.globl _sk_repeat_x_vfp4
-FUNCTION(_sk_repeat_x_vfp4)
-_sk_repeat_x_vfp4:
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xf2c06050 // vmov.i32 q11, #0
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf4e30cbd // vld1.32 {d16[]-d17[]}, [r3 :32]!
- .long 0xf4e32cbf // vld1.32 {d18[]-d19[]}, [r3 :32]
- .long 0xe28f3020 // add r3, pc, #32
- .long 0xf3422dd0 // vmul.f32 q9, q9, q0
- .long 0xf4638acf // vld1.64 {d24-d25}, [r3]
- .long 0xf3fb4762 // vcvt.s32.f32 q10, q9
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3642ee2 // vcgt.f32 q9, q10, q9
- .long 0xf35821f6 // vbsl q9, q12, q11
- .long 0xf2642de2 // vsub.f32 q9, q10, q9
- .long 0xf2200cf2 // vfms.f32 q0, q8, q9
- .long 0xe12fff12 // bx r2
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_repeat_y_vfp4
-.globl _sk_repeat_y_vfp4
-FUNCTION(_sk_repeat_y_vfp4)
-_sk_repeat_y_vfp4:
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xf2c06050 // vmov.i32 q11, #0
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf4e30cbd // vld1.32 {d16[]-d17[]}, [r3 :32]!
- .long 0xf4e32cbf // vld1.32 {d18[]-d19[]}, [r3 :32]
- .long 0xe28f3020 // add r3, pc, #32
- .long 0xf3422dd2 // vmul.f32 q9, q9, q1
- .long 0xf4638acf // vld1.64 {d24-d25}, [r3]
- .long 0xf3fb4762 // vcvt.s32.f32 q10, q9
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3642ee2 // vcgt.f32 q9, q10, q9
- .long 0xf35821f6 // vbsl q9, q12, q11
- .long 0xf2642de2 // vsub.f32 q9, q10, q9
- .long 0xf2202cf2 // vfms.f32 q1, q8, q9
- .long 0xe12fff12 // bx r2
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_mirror_x_vfp4
-.globl _sk_mirror_x_vfp4
-FUNCTION(_sk_mirror_x_vfp4)
-_sk_mirror_x_vfp4:
- .long 0xed2d8b06 // vpush {d8-d10}
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xeeb6aa00 // vmov.f32 s20, #96
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf2c08050 // vmov.i32 q12, #0
- .long 0xe2811008 // add r1, r1, #8
- .long 0xed938a00 // vldr s16, [r3]
- .long 0xed939a01 // vldr s18, [r3, #4]
- .long 0xe28f3040 // add r3, pc, #64
- .long 0xf3f40c48 // vdup.32 q8, d8[0]
- .long 0xf2602d60 // vsub.f32 q9, q0, q8
- .long 0xf463aacf // vld1.64 {d26-d27}, [r3]
- .long 0xee290a0a // vmul.f32 s0, s18, s20
- .long 0xf3e249c0 // vmul.f32 q10, q9, d0[0]
- .long 0xee380a08 // vadd.f32 s0, s16, s16
- .long 0xf3fb6764 // vcvt.s32.f32 q11, q10
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3664ee4 // vcgt.f32 q10, q11, q10
- .long 0xf35a41f8 // vbsl q10, q13, q12
- .long 0xf2664de4 // vsub.f32 q10, q11, q10
- .long 0xf3f46c40 // vdup.32 q11, d0[0]
- .long 0xf2662cf4 // vfms.f32 q9, q11, q10
- .long 0xf2620de0 // vsub.f32 q8, q9, q8
- .long 0xf3b90760 // vabs.f32 q0, q8
- .long 0xecbd8b06 // vpop {d8-d10}
- .long 0xe12fff12 // bx r2
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_mirror_y_vfp4
-.globl _sk_mirror_y_vfp4
-FUNCTION(_sk_mirror_y_vfp4)
-_sk_mirror_y_vfp4:
- .long 0xed2d8b06 // vpush {d8-d10}
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xeeb6aa00 // vmov.f32 s20, #96
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf2c08050 // vmov.i32 q12, #0
- .long 0xe2811008 // add r1, r1, #8
- .long 0xed938a00 // vldr s16, [r3]
- .long 0xed939a01 // vldr s18, [r3, #4]
- .long 0xe28f3040 // add r3, pc, #64
- .long 0xf3f40c48 // vdup.32 q8, d8[0]
- .long 0xf2622d60 // vsub.f32 q9, q1, q8
- .long 0xf463aacf // vld1.64 {d26-d27}, [r3]
- .long 0xee292a0a // vmul.f32 s4, s18, s20
- .long 0xf3e249c2 // vmul.f32 q10, q9, d2[0]
- .long 0xee382a08 // vadd.f32 s4, s16, s16
- .long 0xf3fb6764 // vcvt.s32.f32 q11, q10
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3664ee4 // vcgt.f32 q10, q11, q10
- .long 0xf35a41f8 // vbsl q10, q13, q12
- .long 0xf2664de4 // vsub.f32 q10, q11, q10
- .long 0xf3f46c42 // vdup.32 q11, d2[0]
- .long 0xf2662cf4 // vfms.f32 q9, q11, q10
- .long 0xf2620de0 // vsub.f32 q8, q9, q8
- .long 0xf3b92760 // vabs.f32 q1, q8
- .long 0xecbd8b06 // vpop {d8-d10}
- .long 0xe12fff12 // bx r2
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_clamp_x_1_vfp4
-.globl _sk_clamp_x_1_vfp4
-FUNCTION(_sk_clamp_x_1_vfp4)
-_sk_clamp_x_1_vfp4:
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2400fc0 // vmax.f32 q8, q8, q0
- .long 0xf2200fe2 // vmin.f32 q0, q8, q9
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_repeat_x_1_vfp4
-.globl _sk_repeat_x_1_vfp4
-FUNCTION(_sk_repeat_x_1_vfp4)
-_sk_repeat_x_1_vfp4:
- .long 0xf3fb0740 // vcvt.s32.f32 q8, q0
- .long 0xe28f202c // add r2, pc, #44
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf2c04050 // vmov.i32 q10, #0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xf3602ec0 // vcgt.f32 q9, q8, q0
- .long 0xf35621f4 // vbsl q9, q11, q10
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf2600d60 // vsub.f32 q8, q0, q8
- .long 0xf2440fe0 // vmax.f32 q8, q10, q8
- .long 0xf2200fe2 // vmin.f32 q0, q8, q9
- .long 0xe12fff12 // bx r2
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_mirror_x_1_vfp4
-.globl _sk_mirror_x_1_vfp4
-FUNCTION(_sk_mirror_x_1_vfp4)
-_sk_mirror_x_1_vfp4:
- .long 0xf3c70f50 // vmov.f32 q8, #-1
- .long 0xe28f204c // add r2, pc, #76
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf462aacf // vld1.64 {d26-d27}, [r2]
- .long 0xf2402d60 // vadd.f32 q9, q0, q8
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2c08050 // vmov.i32 q12, #0
- .long 0xf3424df4 // vmul.f32 q10, q9, q10
- .long 0xf3fb6764 // vcvt.s32.f32 q11, q10
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3664ee4 // vcgt.f32 q10, q11, q10
- .long 0xf35a41f8 // vbsl q10, q13, q12
- .long 0xf2664de4 // vsub.f32 q10, q11, q10
- .long 0xf2444de4 // vadd.f32 q10, q10, q10
- .long 0xf2622de4 // vsub.f32 q9, q9, q10
- .long 0xf2420de0 // vadd.f32 q8, q9, q8
- .long 0xf2c72f50 // vmov.f32 q9, #1
- .long 0xf3f90760 // vabs.f32 q8, q8
- .long 0xf2480fe0 // vmax.f32 q8, q12, q8
- .long 0xf2200fe2 // vmin.f32 q0, q8, q9
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_luminance_to_alpha_vfp4
-.globl _sk_luminance_to_alpha_vfp4
-FUNCTION(_sk_luminance_to_alpha_vfp4)
-_sk_luminance_to_alpha_vfp4:
- .long 0xe28f2030 // add r2, pc, #48
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28f2038 // add r2, pc, #56
- .long 0xf3006d70 // vmul.f32 q3, q0, q8
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28f203c // add r2, pc, #60
- .long 0xf2800050 // vmov.i32 q0, #0
- .long 0xf2026c70 // vfma.f32 q3, q1, q8
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2802050 // vmov.i32 q1, #0
- .long 0xf2046c70 // vfma.f32 q3, q2, q8
- .long 0xf2804050 // vmov.i32 q2, #0
- .long 0xe12fff12 // bx r2
- .long 0x3e59b3d0 // .word 0x3e59b3d0
- .long 0x3e59b3d0 // .word 0x3e59b3d0
- .long 0x3e59b3d0 // .word 0x3e59b3d0
- .long 0x3e59b3d0 // .word 0x3e59b3d0
- .long 0x3f371759 // .word 0x3f371759
- .long 0x3f371759 // .word 0x3f371759
- .long 0x3f371759 // .word 0x3f371759
- .long 0x3f371759 // .word 0x3f371759
- .long 0x3d93dd98 // .word 0x3d93dd98
- .long 0x3d93dd98 // .word 0x3d93dd98
- .long 0x3d93dd98 // .word 0x3d93dd98
- .long 0x3d93dd98 // .word 0x3d93dd98
-
-HIDDEN _sk_matrix_translate_vfp4
-.globl _sk_matrix_translate_vfp4
-FUNCTION(_sk_matrix_translate_vfp4)
-_sk_matrix_translate_vfp4:
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf4e30cbd // vld1.32 {d16[]-d17[]}, [r3 :32]!
- .long 0xf2000dc0 // vadd.f32 q0, q8, q0
- .long 0xf4e32cbf // vld1.32 {d18[]-d19[]}, [r3 :32]
- .long 0xf2022dc2 // vadd.f32 q1, q9, q1
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_matrix_scale_translate_vfp4
-.globl _sk_matrix_scale_translate_vfp4
-FUNCTION(_sk_matrix_scale_translate_vfp4)
-_sk_matrix_scale_translate_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0200c // mov r2, #12
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe1a0e003 // mov lr, r3
- .long 0xf4ee2cb2 // vld1.32 {d18[]-d19[]}, [lr :32], r2
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xf2400c72 // vfma.f32 q8, q0, q9
- .long 0xf4ee2cbf // vld1.32 {d18[]-d19[]}, [lr :32]
- .long 0xf2422c74 // vfma.f32 q9, q1, q10
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_matrix_2x3_vfp4
-.globl _sk_matrix_2x3_vfp4
-FUNCTION(_sk_matrix_2x3_vfp4)
-_sk_matrix_2x3_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a02014 // mov r2, #20
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe1a0e003 // mov lr, r3
- .long 0xf4ee4cb2 // vld1.32 {d20[]-d21[]}, [lr :32], r2
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe283200c // add r2, r3, #12
- .long 0xf2420c72 // vfma.f32 q8, q1, q9
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf4ee2cbf // vld1.32 {d18[]-d19[]}, [lr :32]
- .long 0xf2422c76 // vfma.f32 q9, q1, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf2400c74 // vfma.f32 q8, q0, q10
- .long 0xf2402c76 // vfma.f32 q9, q0, q11
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_matrix_3x4_vfp4
-.globl _sk_matrix_3x4_vfp4
-FUNCTION(_sk_matrix_3x4_vfp4)
-_sk_matrix_3x4_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2620152 // vorr q8, q1, q1
- .long 0xe3a0e02c // mov lr, #44
- .long 0xe283201c // add r2, r3, #28
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832028 // add r2, r3, #40
- .long 0xf4a22cbf // vld1.32 {d2[]-d3[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf2042c74 // vfma.f32 q1, q2, q10
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832024 // add r2, r3, #36
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832020 // add r2, r3, #32
- .long 0xf2442c78 // vfma.f32 q9, q2, q12
- .long 0xf4e46cbe // vld1.32 {d22[]-d23[]}, [r4 :32], lr
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe283200c // add r2, r3, #12
- .long 0xf4e44cbf // vld1.32 {d20[]-d21[]}, [r4 :32]
- .long 0xf2444c78 // vfma.f32 q10, q2, q12
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2402cf8 // vfma.f32 q9, q8, q12
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832014 // add r2, r3, #20
- .long 0xf2002cf8 // vfma.f32 q1, q8, q12
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf2404cf8 // vfma.f32 q10, q8, q12
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf2402c76 // vfma.f32 q9, q0, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf2002c70 // vfma.f32 q1, q0, q8
- .long 0xf2404c76 // vfma.f32 q10, q0, q11
- .long 0xf22201f2 // vorr q0, q9, q9
- .long 0xf22441f4 // vorr q2, q10, q10
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_matrix_4x5_vfp4
-.globl _sk_matrix_4x5_vfp4
-FUNCTION(_sk_matrix_4x5_vfp4)
-_sk_matrix_4x5_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf2666156 // vorr q11, q3, q3
- .long 0xf2644154 // vorr q10, q2, q2
- .long 0xe2832030 // add r2, r3, #48
- .long 0xe3a0e04c // mov lr, #76
- .long 0xe1a04003 // mov r4, r3
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf4e2acbf // vld1.32 {d26[]-d27[]}, [r2 :32]
- .long 0xe2832040 // add r2, r3, #64
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832034 // add r2, r3, #52
- .long 0xf2460cfa // vfma.f32 q8, q11, q13
- .long 0xf4e2ccbf // vld1.32 {d28[]-d29[]}, [r2 :32]
- .long 0xe2832038 // add r2, r3, #56
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832048 // add r2, r3, #72
- .long 0xf4a24cbf // vld1.32 {d4[]-d5[]}, [r2 :32]
- .long 0xe2832044 // add r2, r3, #68
- .long 0xf2064cf2 // vfma.f32 q2, q11, q9
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe283203c // add r2, r3, #60
- .long 0xf2462cfc // vfma.f32 q9, q11, q14
- .long 0xf4e48cbe // vld1.32 {d24[]-d25[]}, [r4 :32], lr
- .long 0xf4e2ccbf // vld1.32 {d28[]-d29[]}, [r2 :32]
- .long 0xe2832024 // add r2, r3, #36
- .long 0xf4a46cbf // vld1.32 {d6[]-d7[]}, [r4 :32]
- .long 0xf2066cfc // vfma.f32 q3, q11, q14
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832028 // add r2, r3, #40
- .long 0xf2442cf6 // vfma.f32 q9, q10, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832020 // add r2, r3, #32
- .long 0xf2044cf6 // vfma.f32 q2, q10, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe283202c // add r2, r3, #44
- .long 0xf2440cf6 // vfma.f32 q8, q10, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf2046cf6 // vfma.f32 q3, q10, q11
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2024c74 // vfma.f32 q2, q1, q10
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832014 // add r2, r3, #20
- .long 0xf2420c74 // vfma.f32 q8, q1, q10
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe283201c // add r2, r3, #28
- .long 0xf2422c74 // vfma.f32 q9, q1, q10
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf2026c74 // vfma.f32 q3, q1, q10
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf2004c74 // vfma.f32 q2, q0, q10
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe283200c // add r2, r3, #12
- .long 0xf2400c78 // vfma.f32 q8, q0, q12
- .long 0xf2402c76 // vfma.f32 q9, q0, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf2006c76 // vfma.f32 q3, q0, q11
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf22221f2 // vorr q1, q9, q9
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_matrix_4x3_vfp4
-.globl _sk_matrix_4x3_vfp4
-FUNCTION(_sk_matrix_4x3_vfp4)
-_sk_matrix_4x3_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0e02c // mov lr, #44
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe2832018 // add r2, r3, #24
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832028 // add r2, r3, #40
- .long 0xf4a24cbf // vld1.32 {d4[]-d5[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2024c76 // vfma.f32 q2, q1, q11
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832014 // add r2, r3, #20
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832024 // add r2, r3, #36
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832020 // add r2, r3, #32
- .long 0xf2420c72 // vfma.f32 q8, q1, q9
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe283201c // add r2, r3, #28
- .long 0xf2422c78 // vfma.f32 q9, q1, q12
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf2004c76 // vfma.f32 q2, q0, q11
- .long 0xf4e44cbe // vld1.32 {d20[]-d21[]}, [r4 :32], lr
- .long 0xf4a46cbf // vld1.32 {d6[]-d7[]}, [r4 :32]
- .long 0xf2402c74 // vfma.f32 q9, q0, q10
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe283200c // add r2, r3, #12
- .long 0xf2400c74 // vfma.f32 q8, q0, q10
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xf2026c78 // vfma.f32 q3, q1, q12
- .long 0xf22021f0 // vorr q1, q8, q8
- .long 0xf2006c74 // vfma.f32 q3, q0, q10
- .long 0xf22201f2 // vorr q0, q9, q9
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_matrix_perspective_vfp4
-.globl _sk_matrix_perspective_vfp4
-FUNCTION(_sk_matrix_perspective_vfp4)
-_sk_matrix_perspective_vfp4:
- .long 0xe92d4010 // push {r4, lr}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xe3a0e020 // mov lr, #32
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe283201c // add r2, r3, #28
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e40cbe // vld1.32 {d16[]-d17[]}, [r4 :32], lr
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf4e44cbf // vld1.32 {d20[]-d21[]}, [r4 :32]
- .long 0xf2424c72 // vfma.f32 q10, q1, q9
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf2404c72 // vfma.f32 q10, q0, q9
- .long 0xf4e22cbf // vld1.32 {d18[]-d19[]}, [r2 :32]
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e2acbf // vld1.32 {d26[]-d27[]}, [r2 :32]
- .long 0xe2832014 // add r2, r3, #20
- .long 0xf242ac76 // vfma.f32 q13, q1, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe283200c // add r2, r3, #12
- .long 0xf2426c72 // vfma.f32 q11, q1, q9
- .long 0xf3fb8564 // vrecpe.f32 q12, q10
- .long 0xf240ac70 // vfma.f32 q13, q0, q8
- .long 0xf2442ff8 // vrecps.f32 q9, q10, q12
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xf2406c74 // vfma.f32 q11, q0, q10
- .long 0xf3480df2 // vmul.f32 q8, q12, q9
- .long 0xf30a0df0 // vmul.f32 q0, q13, q8
- .long 0xf3062df0 // vmul.f32 q1, q11, q8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_evenly_spaced_gradient_vfp4
-.globl _sk_evenly_spaced_gradient_vfp4
-FUNCTION(_sk_evenly_spaced_gradient_vfp4)
-_sk_evenly_spaced_gradient_vfp4:
- .long 0xe92d4ff0 // push {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd010 // sub sp, sp, #16
- .long 0xe58d0008 // str r0, [sp, #8]
- .long 0xf2600150 // vorr q8, q0, q0
- .long 0xe5917000 // ldr r7, [r1]
- .long 0xe5910004 // ldr r0, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe58d000c // str r0, [sp, #12]
- .long 0xe8974204 // ldm r7, {r2, r9, lr}
- .long 0xe2422001 // sub r2, r2, #1
- .long 0xe5970010 // ldr r0, [r7, #16]
- .long 0xe597b020 // ldr fp, [r7, #32]
- .long 0xeea22b90 // vdup.32 q9, r2
- .long 0xe597800c // ldr r8, [r7, #12]
- .long 0xf3fb26e2 // vcvt.f32.u32 q9, q9
- .long 0xf3422df0 // vmul.f32 q9, q9, q8
- .long 0xf3fb2762 // vcvt.s32.f32 q9, q9
- .long 0xee333b90 // vmov.32 r3, d19[1]
- .long 0xee134b90 // vmov.32 r4, d19[0]
- .long 0xe0802103 // add r2, r0, r3, lsl #2
- .long 0xedd2ba00 // vldr s23, [r2]
- .long 0xe0802104 // add r2, r0, r4, lsl #2
- .long 0xed92ba00 // vldr s22, [r2]
- .long 0xee322b90 // vmov.32 r2, d18[1]
- .long 0xe0805102 // add r5, r0, r2, lsl #2
- .long 0xedd5aa00 // vldr s21, [r5]
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xe0800105 // add r0, r0, r5, lsl #2
- .long 0xed90aa00 // vldr s20, [r0]
- .long 0xe08b0103 // add r0, fp, r3, lsl #2
- .long 0xedd07a00 // vldr s15, [r0]
- .long 0xe08b0104 // add r0, fp, r4, lsl #2
- .long 0xed907a00 // vldr s14, [r0]
- .long 0xe0880103 // add r0, r8, r3, lsl #2
- .long 0xedd0da00 // vldr s27, [r0]
- .long 0xe0880104 // add r0, r8, r4, lsl #2
- .long 0xed90da00 // vldr s26, [r0]
- .long 0xe0880102 // add r0, r8, r2, lsl #2
- .long 0xedd0ca00 // vldr s25, [r0]
- .long 0xe0880105 // add r0, r8, r5, lsl #2
- .long 0xed90ca00 // vldr s24, [r0]
- .long 0xe597001c // ldr r0, [r7, #28]
- .long 0xe0806103 // add r6, r0, r3, lsl #2
- .long 0xe0808102 // add r8, r0, r2, lsl #2
- .long 0xe080a104 // add sl, r0, r4, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xe0806105 // add r6, r0, r5, lsl #2
- .long 0xe58d6004 // str r6, [sp, #4]
- .long 0xe5970018 // ldr r0, [r7, #24]
- .long 0xe5977014 // ldr r7, [r7, #20]
- .long 0xe080c103 // add ip, r0, r3, lsl #2
- .long 0xe0806104 // add r6, r0, r4, lsl #2
- .long 0xed9a5a00 // vldr s10, [sl]
- .long 0xeddc3a00 // vldr s7, [ip]
- .long 0xedd84a00 // vldr s9, [r8]
- .long 0xed963a00 // vldr s6, [r6]
- .long 0xe0806102 // add r6, r0, r2, lsl #2
- .long 0xe0800105 // add r0, r0, r5, lsl #2
- .long 0xedd62a00 // vldr s5, [r6]
- .long 0xe0876103 // add r6, r7, r3, lsl #2
- .long 0xedd69a00 // vldr s19, [r6]
- .long 0xe0876104 // add r6, r7, r4, lsl #2
- .long 0xed902a00 // vldr s4, [r0]
- .long 0xed969a00 // vldr s18, [r6]
- .long 0xe08e6103 // add r6, lr, r3, lsl #2
- .long 0xe0893103 // add r3, r9, r3, lsl #2
- .long 0xe59d0004 // ldr r0, [sp, #4]
- .long 0xedd61a00 // vldr s3, [r6]
- .long 0xedd3fa00 // vldr s31, [r3]
- .long 0xe0893104 // add r3, r9, r4, lsl #2
- .long 0xed904a00 // vldr s8, [r0]
- .long 0xe08b0102 // add r0, fp, r2, lsl #2
- .long 0xed93fa00 // vldr s30, [r3]
- .long 0xe0893102 // add r3, r9, r2, lsl #2
- .long 0xedd06a00 // vldr s13, [r0]
- .long 0xf2004cdc // vfma.f32 q2, q8, q6
- .long 0xedd3ea00 // vldr s29, [r3]
- .long 0xe0893105 // add r3, r9, r5, lsl #2
- .long 0xe59d0008 // ldr r0, [sp, #8]
- .long 0xed93ea00 // vldr s28, [r3]
- .long 0xe0873102 // add r3, r7, r2, lsl #2
- .long 0xedd38a00 // vldr s17, [r3]
- .long 0xe0873105 // add r3, r7, r5, lsl #2
- .long 0xe08e7105 // add r7, lr, r5, lsl #2
- .long 0xed938a00 // vldr s16, [r3]
- .long 0xe08e3104 // add r3, lr, r4, lsl #2
- .long 0xf2008cde // vfma.f32 q4, q8, q7
- .long 0xed931a00 // vldr s2, [r3]
- .long 0xe08e3102 // add r3, lr, r2, lsl #2
- .long 0xe59d200c // ldr r2, [sp, #12]
- .long 0xedd30a00 // vldr s1, [r3]
- .long 0xe08b3105 // add r3, fp, r5, lsl #2
- .long 0xed936a00 // vldr s12, [r3]
- .long 0xed970a00 // vldr s0, [r7]
- .long 0xf2006cda // vfma.f32 q3, q8, q5
- .long 0xf2002cd0 // vfma.f32 q1, q8, q0
- .long 0xf2280158 // vorr q0, q4, q4
- .long 0xe28dd010 // add sp, sp, #16
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4ff0 // pop {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_gradient_vfp4
-.globl _sk_gradient_vfp4
-FUNCTION(_sk_gradient_vfp4)
-_sk_gradient_vfp4:
- .long 0xe92d4ff0 // push {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- .long 0xe24dd004 // sub sp, sp, #4
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2606150 // vorr q11, q0, q0
- .long 0xf2c02050 // vmov.i32 q9, #0
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe5923000 // ldr r3, [r2]
- .long 0xe3530002 // cmp r3, #2
- .long 0x3a00000a // bcc 63f8 <sk_gradient_vfp4+0x54>
- .long 0xe5927024 // ldr r7, [r2, #36]
- .long 0xf2c04051 // vmov.i32 q10, #1
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xe2433001 // sub r3, r3, #1
- .long 0xe2877004 // add r7, r7, #4
- .long 0xf4e78cbd // vld1.32 {d24[]-d25[]}, [r7 :32]!
- .long 0xe2533001 // subs r3, r3, #1
- .long 0xf3468ee8 // vcge.f32 q12, q11, q12
- .long 0xf35481f2 // vbsl q12, q10, q9
- .long 0xf26008e8 // vadd.i32 q8, q8, q12
- .long 0x1afffff9 // bne 63e0 <sk_gradient_vfp4+0x3c>
- .long 0xee314b90 // vmov.32 r4, d17[1]
- .long 0xe5926010 // ldr r6, [r2, #16]
- .long 0xee11cb90 // vmov.32 ip, d17[0]
- .long 0xe592e020 // ldr lr, [r2, #32]
- .long 0xe592700c // ldr r7, [r2, #12]
- .long 0xe592901c // ldr r9, [r2, #28]
- .long 0xe5928008 // ldr r8, [r2, #8]
- .long 0xe592b004 // ldr fp, [r2, #4]
- .long 0xe0863104 // add r3, r6, r4, lsl #2
- .long 0xedd3ba00 // vldr s23, [r3]
- .long 0xe086310c // add r3, r6, ip, lsl #2
- .long 0xed93ba00 // vldr s22, [r3]
- .long 0xee303b90 // vmov.32 r3, d16[1]
- .long 0xe0865103 // add r5, r6, r3, lsl #2
- .long 0xedd5aa00 // vldr s21, [r5]
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xe0866105 // add r6, r6, r5, lsl #2
- .long 0xed96aa00 // vldr s20, [r6]
- .long 0xe08e6104 // add r6, lr, r4, lsl #2
- .long 0xedd67a00 // vldr s15, [r6]
- .long 0xe08e610c // add r6, lr, ip, lsl #2
- .long 0xed967a00 // vldr s14, [r6]
- .long 0xe0876104 // add r6, r7, r4, lsl #2
- .long 0xedd6da00 // vldr s27, [r6]
- .long 0xe087610c // add r6, r7, ip, lsl #2
- .long 0xed96da00 // vldr s26, [r6]
- .long 0xe0876103 // add r6, r7, r3, lsl #2
- .long 0xedd6ca00 // vldr s25, [r6]
- .long 0xe0876105 // add r6, r7, r5, lsl #2
- .long 0xed96ca00 // vldr s24, [r6]
- .long 0xe0896104 // add r6, r9, r4, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xe5926018 // ldr r6, [r2, #24]
- .long 0xe5922014 // ldr r2, [r2, #20]
- .long 0xe0867104 // add r7, r6, r4, lsl #2
- .long 0xe086a103 // add sl, r6, r3, lsl #2
- .long 0xedd73a00 // vldr s7, [r7]
- .long 0xe086710c // add r7, r6, ip, lsl #2
- .long 0xed973a00 // vldr s6, [r7]
- .long 0xe0867105 // add r7, r6, r5, lsl #2
- .long 0xe0886104 // add r6, r8, r4, lsl #2
- .long 0xedda2a00 // vldr s5, [sl]
- .long 0xedd6fa00 // vldr s31, [r6]
- .long 0xe088610c // add r6, r8, ip, lsl #2
- .long 0xed972a00 // vldr s4, [r7]
- .long 0xe089710c // add r7, r9, ip, lsl #2
- .long 0xed96fa00 // vldr s30, [r6]
- .long 0xe0826104 // add r6, r2, r4, lsl #2
- .long 0xe08b4104 // add r4, fp, r4, lsl #2
- .long 0xed975a00 // vldr s10, [r7]
- .long 0xedd69a00 // vldr s19, [r6]
- .long 0xe082610c // add r6, r2, ip, lsl #2
- .long 0xedd41a00 // vldr s3, [r4]
- .long 0xe0884103 // add r4, r8, r3, lsl #2
- .long 0xed969a00 // vldr s18, [r6]
- .long 0xe0826103 // add r6, r2, r3, lsl #2
- .long 0xe0822105 // add r2, r2, r5, lsl #2
- .long 0xedd4ea00 // vldr s29, [r4]
- .long 0xedd68a00 // vldr s17, [r6]
- .long 0xe08b610c // add r6, fp, ip, lsl #2
- .long 0xe0894105 // add r4, r9, r5, lsl #2
- .long 0xed961a00 // vldr s2, [r6]
- .long 0xe08b6103 // add r6, fp, r3, lsl #2
- .long 0xed928a00 // vldr s16, [r2]
- .long 0xe08e2105 // add r2, lr, r5, lsl #2
- .long 0xedd60a00 // vldr s1, [r6]
- .long 0xe08b6105 // add r6, fp, r5, lsl #2
- .long 0xe0885105 // add r5, r8, r5, lsl #2
- .long 0xed960a00 // vldr s0, [r6]
- .long 0xed95ea00 // vldr s28, [r5]
- .long 0xe0895103 // add r5, r9, r3, lsl #2
- .long 0xf2068cd0 // vfma.f32 q4, q11, q0
- .long 0xe08e3103 // add r3, lr, r3, lsl #2
- .long 0xedd54a00 // vldr s9, [r5]
- .long 0xedd36a00 // vldr s13, [r3]
- .long 0xf2062cde // vfma.f32 q1, q11, q7
- .long 0xed944a00 // vldr s8, [r4]
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xf2064cdc // vfma.f32 q2, q11, q6
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf2066cda // vfma.f32 q3, q11, q5
- .long 0xf2280158 // vorr q0, q4, q4
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe28dd004 // add sp, sp, #4
- .long 0xe8bd4ff0 // pop {r4, r5, r6, r7, r8, r9, sl, fp, lr}
- .long 0xe12fff12 // bx r2
-
-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 0xe3a0e01c // mov lr, #28
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe283200c // add r2, r3, #12
- .long 0xe1a04003 // mov r4, r3
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xe2832008 // add r2, r3, #8
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xe2832004 // add r2, r3, #4
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832010 // add r2, r3, #16
- .long 0xf4e42cbe // vld1.32 {d18[]-d19[]}, [r4 :32], lr
- .long 0xf4e20cbf // vld1.32 {d16[]-d17[]}, [r2 :32]
- .long 0xe2832014 // add r2, r3, #20
- .long 0xf2400c72 // vfma.f32 q8, q0, q9
- .long 0xf4a22cbf // vld1.32 {d2[]-d3[]}, [r2 :32]
- .long 0xe2832018 // add r2, r3, #24
- .long 0xf2002c78 // vfma.f32 q1, q0, q12
- .long 0xf4a24cbf // vld1.32 {d4[]-d5[]}, [r2 :32]
- .long 0xf2004c76 // vfma.f32 q2, q0, q11
- .long 0xf4a46cbf // vld1.32 {d6[]-d7[]}, [r4 :32]
- .long 0xf2006c74 // vfma.f32 q3, q0, q10
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xe8bd4010 // pop {r4, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
-
-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 0xed2d8b0c // vpush {d8-d13}
- .long 0xf3f90742 // vabs.f32 q8, q1
- .long 0xe28f20a0 // add r2, pc, #160
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f20a8 // add r2, pc, #168
- .long 0xf3f92740 // vabs.f32 q9, q0
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe28f20ac // add r2, pc, #172
- .long 0xf202afe0 // vmax.f32 q5, q9, q8
- .long 0xf222cfe0 // vmin.f32 q6, q9, q8
- .long 0xf3600ee2 // vcgt.f32 q8, q8, q9
- .long 0xeecd9aab // vdiv.f32 s19, s27, s23
- .long 0xee8d9a0b // vdiv.f32 s18, s26, s22
- .long 0xeecc8aaa // vdiv.f32 s17, s25, s21
- .long 0xee8c8a0a // vdiv.f32 s16, s24, s20
- .long 0xf3484d58 // vmul.f32 q10, q4, q4
- .long 0xf2448cf6 // vfma.f32 q12, q10, q11
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xe28f2090 // add r2, pc, #144
- .long 0xf2446cf8 // vfma.f32 q11, q10, q12
- .long 0xf4628acf // vld1.64 {d24-d25}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2448cf6 // vfma.f32 q12, q10, q11
- .long 0xf2c56f50 // vmov.f32 q11, #0.25
- .long 0xf3484d78 // vmul.f32 q10, q4, q12
- .long 0xf2662de4 // vsub.f32 q9, q11, q10
- .long 0xf35201f4 // vbsl q8, q9, q10
- .long 0xf3f94640 // vclt.f32 q10, q0, #0
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xf2622de0 // vsub.f32 q9, q9, q8
- .long 0xf35241f0 // vbsl q10, q9, q8
- .long 0xf3f92642 // vclt.f32 q9, q1, #0
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xf2600de4 // vsub.f32 q8, q8, q10
- .long 0xf35021f4 // vbsl q9, q8, q10
- .long 0xf2c00050 // vmov.i32 q8, #0
- .long 0xf3424ee0 // vcge.f32 q10, q9, q8
- .long 0xf3606ee2 // vcgt.f32 q11, q8, q9
- .long 0xf26641f4 // vorr q10, q11, q10
- .long 0xf3b005e4 // vmvn q0, q10
- .long 0xf31001f2 // vbsl q0, q8, q9
- .long 0xecbd8b0c // vpop {d8-d13}
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0xbbe72b6f // .word 0xbbe72b6f
- .long 0xbbe72b6f // .word 0xbbe72b6f
- .long 0xbbe72b6f // .word 0xbbe72b6f
- .long 0xbbe72b6f // .word 0xbbe72b6f
- .long 0x3ccad79f // .word 0x3ccad79f
- .long 0x3ccad79f // .word 0x3ccad79f
- .long 0x3ccad79f // .word 0x3ccad79f
- .long 0x3ccad79f // .word 0x3ccad79f
- .long 0xbd5464d4 // .word 0xbd5464d4
- .long 0xbd5464d4 // .word 0xbd5464d4
- .long 0xbd5464d4 // .word 0xbd5464d4
- .long 0xbd5464d4 // .word 0xbd5464d4
- .long 0x3e22f0a9 // .word 0x3e22f0a9
- .long 0x3e22f0a9 // .word 0x3e22f0a9
- .long 0x3e22f0a9 // .word 0x3e22f0a9
- .long 0x3e22f0a9 // .word 0x3e22f0a9
-
-HIDDEN _sk_xy_to_radius_vfp4
-.globl _sk_xy_to_radius_vfp4
-FUNCTION(_sk_xy_to_radius_vfp4)
-_sk_xy_to_radius_vfp4:
- .long 0xf3400d50 // vmul.f32 q8, q0, q0
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2420c52 // vfma.f32 q8, q1, q1
- .long 0xf3fb25e0 // vrsqrte.f32 q9, q8
- .long 0xf3424df2 // vmul.f32 q10, q9, q9
- .long 0xf2604ff4 // vrsqrts.f32 q10, q8, q10
- .long 0xf3422df4 // vmul.f32 q9, q9, q10
- .long 0xf3424df2 // vmul.f32 q10, q9, q9
- .long 0xf2604ff4 // vrsqrts.f32 q10, q8, q10
- .long 0xf3422df4 // vmul.f32 q9, q9, q10
- .long 0xf3000df2 // vmul.f32 q0, q8, q9
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_xy_to_2pt_conical_quadratic_first_vfp4
-.globl _sk_xy_to_2pt_conical_quadratic_first_vfp4
-FUNCTION(_sk_xy_to_2pt_conical_quadratic_first_vfp4)
-_sk_xy_to_2pt_conical_quadratic_first_vfp4:
- .long 0xed2d8b04 // vpush {d8-d9}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf3400d50 // vmul.f32 q8, q0, q0
- .long 0xf3c14f50 // vmov.f32 q10, #-4
- .long 0xe2832040 // add r2, r3, #64
- .long 0xe2811008 // add r1, r1, #8
- .long 0xed938a12 // vldr s16, [r3, #72]
- .long 0xed939a13 // vldr s18, [r3, #76]
- .long 0xf2420c52 // vfma.f32 q8, q1, q1
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832044 // add r2, r3, #68
- .long 0xee299a08 // vmul.f32 s18, s18, s16
- .long 0xee288a08 // vmul.f32 s16, s16, s16
- .long 0xf3484df4 // vmul.f32 q10, q12, q10
- .long 0xf3f42c49 // vdup.32 q9, d9[0]
- .long 0xf3f46c48 // vdup.32 q11, d8[0]
- .long 0xf2422dc0 // vadd.f32 q9, q9, q0
- .long 0xf2600de6 // vsub.f32 q8, q8, q11
- .long 0xf3c46650 // vmov.i32 q11, #-1073741824
- .long 0xf3422df6 // vmul.f32 q9, q9, q11
- .long 0xf3440df0 // vmul.f32 q8, q10, q8
- .long 0xf2420cf2 // vfma.f32 q8, q9, q9
- .long 0xf3fb45e0 // vrsqrte.f32 q10, q8
- .long 0xf3446df4 // vmul.f32 q11, q10, q10
- .long 0xf2606ff6 // vrsqrts.f32 q11, q8, q11
- .long 0xf3444df6 // vmul.f32 q10, q10, q11
- .long 0xf3446df4 // vmul.f32 q11, q10, q10
- .long 0xf2606ff6 // vrsqrts.f32 q11, q8, q11
- .long 0xf3444df6 // vmul.f32 q10, q10, q11
- .long 0xf4e26cbf // vld1.32 {d22[]-d23[]}, [r2 :32]
- .long 0xf3440df0 // vmul.f32 q8, q10, q8
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf3462df4 // vmul.f32 q9, q11, q10
- .long 0xf3020df0 // vmul.f32 q0, q9, q8
- .long 0xecbd8b04 // vpop {d8-d9}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_xy_to_2pt_conical_quadratic_second_vfp4
-.globl _sk_xy_to_2pt_conical_quadratic_second_vfp4
-FUNCTION(_sk_xy_to_2pt_conical_quadratic_second_vfp4)
-_sk_xy_to_2pt_conical_quadratic_second_vfp4:
- .long 0xed2d8b04 // vpush {d8-d9}
- .long 0xe8911008 // ldm r1, {r3, ip}
- .long 0xf3400d50 // vmul.f32 q8, q0, q0
- .long 0xf3c14f50 // vmov.f32 q10, #-4
- .long 0xe2832040 // add r2, r3, #64
- .long 0xe2811008 // add r1, r1, #8
- .long 0xed938a12 // vldr s16, [r3, #72]
- .long 0xed939a13 // vldr s18, [r3, #76]
- .long 0xf2420c52 // vfma.f32 q8, q1, q1
- .long 0xf4e28cbf // vld1.32 {d24[]-d25[]}, [r2 :32]
- .long 0xe2832044 // add r2, r3, #68
- .long 0xee299a08 // vmul.f32 s18, s18, s16
- .long 0xee288a08 // vmul.f32 s16, s16, s16
- .long 0xf3484df4 // vmul.f32 q10, q12, q10
- .long 0xf3f42c49 // vdup.32 q9, d9[0]
- .long 0xf3f46c48 // vdup.32 q11, d8[0]
- .long 0xf2422dc0 // vadd.f32 q9, q9, q0
- .long 0xf2600de6 // vsub.f32 q8, q8, q11
- .long 0xf3c46650 // vmov.i32 q11, #-1073741824
- .long 0xf3422df6 // vmul.f32 q9, q9, q11
- .long 0xf3440df0 // vmul.f32 q8, q10, q8
- .long 0xf2420cf2 // vfma.f32 q8, q9, q9
- .long 0xf3f927e2 // vneg.f32 q9, q9
- .long 0xf3fb45e0 // vrsqrte.f32 q10, q8
- .long 0xf3446df4 // vmul.f32 q11, q10, q10
- .long 0xf2606ff6 // vrsqrts.f32 q11, q8, q11
- .long 0xf3444df6 // vmul.f32 q10, q10, q11
- .long 0xf3446df4 // vmul.f32 q11, q10, q10
- .long 0xf2606ff6 // vrsqrts.f32 q11, q8, q11
- .long 0xf3444df6 // vmul.f32 q10, q10, q11
- .long 0xf2642cf0 // vfms.f32 q9, q10, q8
- .long 0xf4e24cbf // vld1.32 {d20[]-d21[]}, [r2 :32]
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf3440df0 // vmul.f32 q8, q10, q8
- .long 0xf3000df2 // vmul.f32 q0, q8, q9
- .long 0xecbd8b04 // vpop {d8-d9}
- .long 0xe12fff1c // bx ip
-
-HIDDEN _sk_xy_to_2pt_conical_linear_vfp4
-.globl _sk_xy_to_2pt_conical_linear_vfp4
-FUNCTION(_sk_xy_to_2pt_conical_linear_vfp4)
-_sk_xy_to_2pt_conical_linear_vfp4:
- .long 0xed2d8b08 // vpush {d8-d11}
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xf3400d50 // vmul.f32 q8, q0, q0
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xed938a12 // vldr s16, [r3, #72]
- .long 0xed939a13 // vldr s18, [r3, #76]
- .long 0xf2420c52 // vfma.f32 q8, q1, q1
- .long 0xee28aa08 // vmul.f32 s20, s16, s16
- .long 0xee298a08 // vmul.f32 s16, s18, s16
- .long 0xf3f42c4a // vdup.32 q9, d10[0]
- .long 0xf3f44c48 // vdup.32 q10, d8[0]
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf2442dc0 // vadd.f32 q9, q10, q0
- .long 0xf3c44650 // vmov.i32 q10, #-1073741824
- .long 0xf3b987e0 // vneg.f32 q4, q8
- .long 0xf302adf4 // vmul.f32 q5, q9, q10
- .long 0xeec91aab // vdiv.f32 s3, s19, s23
- .long 0xee891a0b // vdiv.f32 s2, s18, s22
- .long 0xeec80aaa // vdiv.f32 s1, s17, s21
- .long 0xee880a0a // vdiv.f32 s0, s16, s20
- .long 0xecbd8b08 // vpop {d8-d11}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_mask_2pt_conical_degenerates_vfp4
-.globl _sk_mask_2pt_conical_degenerates_vfp4
-FUNCTION(_sk_mask_2pt_conical_degenerates_vfp4)
-_sk_mask_2pt_conical_degenerates_vfp4:
- .long 0xf2c02050 // vmov.i32 q9, #0
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf3400e62 // vcge.f32 q8, q0, q9
- .long 0xe282304c // add r3, r2, #76
- .long 0xf3624ec0 // vcgt.f32 q10, q9, q0
- .long 0xf4e36cbf // vld1.32 {d22[]-d23[]}, [r3 :32]
- .long 0xe2823048 // add r3, r2, #72
- .long 0xf26401f0 // vorr q8, q10, q8
- .long 0xf4e34cbf // vld1.32 {d20[]-d21[]}, [r3 :32]
- .long 0xf2404c76 // vfma.f32 q10, q0, q11
- .long 0xf3f005e0 // vmvn q8, q8
- .long 0xf3f94664 // vclt.f32 q10, q10, #0
- .long 0xf3f64224 // vmovn.i32 d20, q10
- .long 0xf3f60220 // vmovn.i32 d16, q8
- .long 0xf26401b0 // vorr d16, d20, d16
- .long 0xf2c1405f // vmov.i32 q10, #31
- .long 0xf3d00a30 // vmovl.u16 q8, d16
- .long 0xf3f943e4 // vneg.s32 q10, q10
- .long 0xf2ff0570 // vshl.s32 q8, q8, #31
- .long 0xf26404e0 // vshl.s32 q8, q8, q10
- .long 0xf3c74e5f // vmov.i8 q10, #255
- .long 0xf26061f0 // vorr q11, q8, q8
- .long 0xf35201d0 // vbsl q8, q9, q0
- .long 0xf35261f4 // vbsl q11, q9, q10
- .long 0xf22001f0 // vorr q0, q8, q8
- .long 0xf4426a8f // vst1.32 {d22-d23}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
-
-HIDDEN _sk_apply_vector_mask_vfp4
-.globl _sk_apply_vector_mask_vfp4
-FUNCTION(_sk_apply_vector_mask_vfp4)
-_sk_apply_vector_mask_vfp4:
- .long 0xe5913000 // ldr r3, [r1]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xf4630a8f // vld1.32 {d16-d17}, [r3]
- .long 0xf20001d0 // vand q0, q8, q0
- .long 0xf20021d2 // vand q1, q8, q1
- .long 0xf20041d4 // vand q2, q8, q2
- .long 0xf20061d6 // vand q3, q8, q3
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_save_xy_vfp4
-.globl _sk_save_xy_vfp4
-FUNCTION(_sk_save_xy_vfp4)
-_sk_save_xy_vfp4:
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xe28f206c // add r2, pc, #108
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf2c0a050 // vmov.i32 q13, #0
- .long 0xf2402d60 // vadd.f32 q9, q0, q8
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2420d60 // vadd.f32 q8, q1, q8
- .long 0xe2823040 // add r3, r2, #64
- .long 0xf3fb4762 // vcvt.s32.f32 q10, q9
- .long 0xf4032a8f // vst1.32 {d2-d3}, [r3]
- .long 0xe2823080 // add r3, r2, #128
- .long 0xf3fb6760 // vcvt.s32.f32 q11, q8
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xf3648ee2 // vcgt.f32 q12, q10, q9
- .long 0xf366eee0 // vcgt.f32 q15, q11, q8
- .long 0xf35c81fa // vbsl q12, q14, q13
- .long 0xf35ce1fa // vbsl q15, q14, q13
- .long 0xf2644de8 // vsub.f32 q10, q10, q12
- .long 0xf2666dee // vsub.f32 q11, q11, q15
- .long 0xf2622de4 // vsub.f32 q9, q9, q10
- .long 0xf2600de6 // vsub.f32 q8, q8, q11
- .long 0xf4432a8f // vst1.32 {d18-d19}, [r3]
- .long 0xe3a030c0 // mov r3, #192
- .long 0xf4020a83 // vst1.32 {d0-d1}, [r2], r3
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_accumulate_vfp4
-.globl _sk_accumulate_vfp4
-FUNCTION(_sk_accumulate_vfp4)
-_sk_accumulate_vfp4:
- .long 0xe92d4800 // push {fp, lr}
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe280e020 // add lr, r0, #32
- .long 0xe280c010 // add ip, r0, #16
- .long 0xf46e4acf // vld1.64 {d20-d21}, [lr]
- .long 0xe2823d05 // add r3, r2, #320
- .long 0xe2822c01 // add r2, r2, #256
- .long 0xf4630a8f // vld1.32 {d16-d17}, [r3]
- .long 0xe2803040 // add r3, r0, #64
- .long 0xf4622a8f // vld1.32 {d18-d19}, [r2]
- .long 0xe2802030 // add r2, r0, #48
- .long 0xf3420df0 // vmul.f32 q8, q9, q8
- .long 0xf46c2acf // vld1.64 {d18-d19}, [ip]
- .long 0xf4626acf // vld1.64 {d22-d23}, [r2]
- .long 0xf4638acf // vld1.64 {d24-d25}, [r3]
- .long 0xf2402cd0 // vfma.f32 q9, q8, q0
- .long 0xf2404cd2 // vfma.f32 q10, q8, q1
- .long 0xf2406cd4 // vfma.f32 q11, q8, q2
- .long 0xf2408cd6 // vfma.f32 q12, q8, q3
- .long 0xf44c2acf // vst1.64 {d18-d19}, [ip]
- .long 0xf44e4acf // vst1.64 {d20-d21}, [lr]
- .long 0xf4426acf // vst1.64 {d22-d23}, [r2]
- .long 0xf4438acf // vst1.64 {d24-d25}, [r3]
- .long 0xe5912004 // ldr r2, [r1, #4]
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8bd4800 // pop {fp, lr}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_bilinear_nx_vfp4
-.globl _sk_bilinear_nx_vfp4
-FUNCTION(_sk_bilinear_nx_vfp4)
-_sk_bilinear_nx_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2823080 // add r3, r2, #128
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe3a03c01 // mov r3, #256
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf4624a83 // vld1.32 {d20-d21}, [r2], r3
- .long 0xf3c3265f // vmov.i32 q9, #-1090519040
- .long 0xf2040de2 // vadd.f32 q0, q10, q9
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
-
-HIDDEN _sk_bilinear_px_vfp4
-.globl _sk_bilinear_px_vfp4
-FUNCTION(_sk_bilinear_px_vfp4)
-_sk_bilinear_px_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe3a0cc01 // mov ip, #256
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xe2823080 // add r3, r2, #128
- .long 0xf4620a8c // vld1.32 {d16-d17}, [r2], ip
- .long 0xf2000de2 // vadd.f32 q0, q8, q9
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xf4424a8f // vst1.32 {d20-d21}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
-
-HIDDEN _sk_bilinear_ny_vfp4
-.globl _sk_bilinear_ny_vfp4
-FUNCTION(_sk_bilinear_ny_vfp4)
-_sk_bilinear_ny_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe28230c0 // add r3, r2, #192
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe2823040 // add r3, r2, #64
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xe2822d05 // add r2, r2, #320
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xf3c3265f // vmov.i32 q9, #-1090519040
- .long 0xf2042de2 // vadd.f32 q1, q10, q9
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
-
-HIDDEN _sk_bilinear_py_vfp4
-.globl _sk_bilinear_py_vfp4
-FUNCTION(_sk_bilinear_py_vfp4)
-_sk_bilinear_py_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c3265f // vmov.i32 q9, #1056964608
- .long 0xe28230c0 // add r3, r2, #192
- .long 0xf4630a8f // vld1.32 {d16-d17}, [r3]
- .long 0xe2823040 // add r3, r2, #64
- .long 0xe2822d05 // add r2, r2, #320
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xf2042de2 // vadd.f32 q1, q10, q9
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0xe320f000 // nop {0}
-
-HIDDEN _sk_bicubic_n3x_vfp4
-.globl _sk_bicubic_n3x_vfp4
-FUNCTION(_sk_bicubic_n3x_vfp4)
-_sk_bicubic_n3x_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2823080 // add r3, r2, #128
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe28f3040 // add r3, pc, #64
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xe3a03c01 // mov r3, #256
- .long 0xf2404cf2 // vfma.f32 q10, q8, q9
- .long 0xf3400df0 // vmul.f32 q8, q8, q8
- .long 0xf3c72f58 // vmov.f32 q9, #-1.5
- .long 0xf3400df4 // vmul.f32 q8, q8, q10
- .long 0xf4624a83 // vld1.32 {d20-d21}, [r2], r3
- .long 0xf2040de2 // vadd.f32 q0, q10, q9
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0xe320f000 // nop {0}
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
-
-HIDDEN _sk_bicubic_n1x_vfp4
-.globl _sk_bicubic_n1x_vfp4
-FUNCTION(_sk_bicubic_n1x_vfp4)
-_sk_bicubic_n1x_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe2823080 // add r3, r2, #128
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe28f3048 // add r3, pc, #72
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xe28f304c // add r3, pc, #76
- .long 0xf2c72f58 // vmov.f32 q9, #1.5
- .long 0xf2402cf4 // vfma.f32 q9, q8, q10
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf2404cf2 // vfma.f32 q10, q8, q9
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe3a03c01 // mov r3, #256
- .long 0xf2402cf4 // vfma.f32 q9, q8, q10
- .long 0xf4624a83 // vld1.32 {d20-d21}, [r2], r3
- .long 0xf3c3065f // vmov.i32 q8, #-1090519040
- .long 0xf2040de0 // vadd.f32 q0, q10, q8
- .long 0xf4422a8f // vst1.32 {d18-d19}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0xe320f000 // nop {0}
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
-
-HIDDEN _sk_bicubic_p1x_vfp4
-.globl _sk_bicubic_p1x_vfp4
-FUNCTION(_sk_bicubic_p1x_vfp4)
-_sk_bicubic_p1x_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe28f304c // add r3, pc, #76
- .long 0xf4630acf // vld1.64 {d16-d17}, [r3]
- .long 0xf2c72f58 // vmov.f32 q9, #1.5
- .long 0xe2823080 // add r3, r2, #128
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf2442cf0 // vfma.f32 q9, q10, q8
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2446cf2 // vfma.f32 q11, q10, q9
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe3a03c01 // mov r3, #256
- .long 0xf2442cf6 // vfma.f32 q9, q10, q11
- .long 0xf4624a83 // vld1.32 {d20-d21}, [r2], r3
- .long 0xf2040de0 // vadd.f32 q0, q10, q8
- .long 0xf4422a8f // vst1.32 {d18-d19}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0xe320f000 // nop {0}
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
-
-HIDDEN _sk_bicubic_p3x_vfp4
-.globl _sk_bicubic_p3x_vfp4
-FUNCTION(_sk_bicubic_p3x_vfp4)
-_sk_bicubic_p3x_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf4630acf // vld1.64 {d16-d17}, [r3]
- .long 0xe2823080 // add r3, r2, #128
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xe3a03c01 // mov r3, #256
- .long 0xf2424cf0 // vfma.f32 q10, q9, q8
- .long 0xf3420df2 // vmul.f32 q8, q9, q9
- .long 0xf2c72f58 // vmov.f32 q9, #1.5
- .long 0xf3400df4 // vmul.f32 q8, q8, q10
- .long 0xf4624a83 // vld1.32 {d20-d21}, [r2], r3
- .long 0xf2040de2 // vadd.f32 q0, q10, q9
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0xe320f000 // nop {0}
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
-
-HIDDEN _sk_bicubic_n3y_vfp4
-.globl _sk_bicubic_n3y_vfp4
-FUNCTION(_sk_bicubic_n3y_vfp4)
-_sk_bicubic_n3y_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe28230c0 // add r3, r2, #192
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe28f3040 // add r3, pc, #64
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xe2823040 // add r3, r2, #64
- .long 0xe2822d05 // add r2, r2, #320
- .long 0xf2404cf2 // vfma.f32 q10, q8, q9
- .long 0xf3400df0 // vmul.f32 q8, q8, q8
- .long 0xf3c72f58 // vmov.f32 q9, #-1.5
- .long 0xf3400df4 // vmul.f32 q8, q8, q10
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xf2042de2 // vadd.f32 q1, q10, q9
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
-
-HIDDEN _sk_bicubic_n1y_vfp4
-.globl _sk_bicubic_n1y_vfp4
-FUNCTION(_sk_bicubic_n1y_vfp4)
-_sk_bicubic_n1y_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xf2c70f50 // vmov.f32 q8, #1
- .long 0xe28230c0 // add r3, r2, #192
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe28f3048 // add r3, pc, #72
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xe28f304c // add r3, pc, #76
- .long 0xf2c72f58 // vmov.f32 q9, #1.5
- .long 0xf2402cf4 // vfma.f32 q9, q8, q10
- .long 0xf2c3465f // vmov.i32 q10, #1056964608
- .long 0xf2404cf2 // vfma.f32 q10, q8, q9
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe2823040 // add r3, r2, #64
- .long 0xe2822d05 // add r2, r2, #320
- .long 0xf2402cf4 // vfma.f32 q9, q8, q10
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xf3c3065f // vmov.i32 q8, #-1090519040
- .long 0xf2042de0 // vadd.f32 q1, q10, q8
- .long 0xf4422a8f // vst1.32 {d18-d19}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
-
-HIDDEN _sk_bicubic_p1y_vfp4
-.globl _sk_bicubic_p1y_vfp4
-FUNCTION(_sk_bicubic_p1y_vfp4)
-_sk_bicubic_p1y_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe28f304c // add r3, pc, #76
- .long 0xf4630acf // vld1.64 {d16-d17}, [r3]
- .long 0xf2c72f58 // vmov.f32 q9, #1.5
- .long 0xe28230c0 // add r3, r2, #192
- .long 0xf2c3665f // vmov.i32 q11, #1056964608
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf2442cf0 // vfma.f32 q9, q10, q8
- .long 0xf2c3065f // vmov.i32 q8, #1056964608
- .long 0xf2446cf2 // vfma.f32 q11, q10, q9
- .long 0xf4632acf // vld1.64 {d18-d19}, [r3]
- .long 0xe2823040 // add r3, r2, #64
- .long 0xe2822d05 // add r2, r2, #320
- .long 0xf2442cf6 // vfma.f32 q9, q10, q11
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xf2042de0 // vadd.f32 q1, q10, q8
- .long 0xf4422a8f // vst1.32 {d18-d19}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0xbf955555 // .word 0xbf955555
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
- .long 0x3d638e39 // .word 0x3d638e39
-
-HIDDEN _sk_bicubic_p3y_vfp4
-.globl _sk_bicubic_p3y_vfp4
-FUNCTION(_sk_bicubic_p3y_vfp4)
-_sk_bicubic_p3y_vfp4:
- .long 0xe5912000 // ldr r2, [r1]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf4630acf // vld1.64 {d16-d17}, [r3]
- .long 0xe28230c0 // add r3, r2, #192
- .long 0xf4632a8f // vld1.32 {d18-d19}, [r3]
- .long 0xe28f3044 // add r3, pc, #68
- .long 0xf4634acf // vld1.64 {d20-d21}, [r3]
- .long 0xe2823040 // add r3, r2, #64
- .long 0xf2424cf0 // vfma.f32 q10, q9, q8
- .long 0xe2822d05 // add r2, r2, #320
- .long 0xf3420df2 // vmul.f32 q8, q9, q9
- .long 0xf2c72f58 // vmov.f32 q9, #1.5
- .long 0xf3400df4 // vmul.f32 q8, q8, q10
- .long 0xf4634a8f // vld1.32 {d20-d21}, [r3]
- .long 0xf2042de2 // vadd.f32 q1, q10, q9
- .long 0xf4420a8f // vst1.32 {d16-d17}, [r2]
- .long 0xe2812008 // add r2, r1, #8
- .long 0xe5913004 // ldr r3, [r1, #4]
- .long 0xe1a01002 // mov r1, r2
- .long 0xe12fff13 // bx r3
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0x3ec71c72 // .word 0x3ec71c72
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
- .long 0xbeaaaaab // .word 0xbeaaaaab
-
-HIDDEN _sk_callback_vfp4
-.globl _sk_callback_vfp4
-FUNCTION(_sk_callback_vfp4)
-_sk_callback_vfp4:
- .long 0xe92d4c70 // push {r4, r5, r6, sl, fp, lr}
- .long 0xe28db010 // add fp, sp, #16
- .long 0xe1a04001 // mov r4, r1
- .long 0xe1a05000 // mov r5, r0
- .long 0xe5946000 // ldr r6, [r4]
- .long 0xe5951008 // ldr r1, [r5, #8]
- .long 0xe2860004 // add r0, r6, #4
- .long 0xe3510000 // cmp r1, #0
- .long 0xf400018d // vst4.32 {d0,d2,d4,d6}, [r0]!
- .long 0x03001004 // movweq r1, #4
- .long 0xf400118f // vst4.32 {d1,d3,d5,d7}, [r0]
- .long 0xe1a00006 // mov r0, r6
- .long 0xe5962000 // ldr r2, [r6]
- .long 0xe12fff32 // blx r2
- .long 0xe5960104 // ldr r0, [r6, #260]
- .long 0xe2841008 // add r1, r4, #8
- .long 0xf420018d // vld4.32 {d0,d2,d4,d6}, [r0]!
- .long 0xf420118f // vld4.32 {d1,d3,d5,d7}, [r0]
- .long 0xe1a00005 // mov r0, r5
- .long 0xe5942004 // ldr r2, [r4, #4]
- .long 0xe8bd4c70 // pop {r4, r5, r6, sl, fp, lr}
- .long 0xe12fff12 // bx r2
-
-HIDDEN _sk_clut_3D_vfp4
-.globl _sk_clut_3D_vfp4
-FUNCTION(_sk_clut_3D_vfp4)
-_sk_clut_3D_vfp4:
- .long 0xe92d4830 // push {r4, r5, fp, lr}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24dd0a0 // sub sp, sp, #160
- .long 0xe28de070 // add lr, sp, #112
- .long 0xec8e6b04 // vstmia lr, {d6-d7}
- .long 0xe8911004 // ldm r1, {r2, ip}
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8924008 // ldm r2, {r3, lr}
- .long 0xe5924008 // ldr r4, [r2, #8]
- .long 0xe592200c // ldr r2, [r2, #12]
- .long 0xe2445001 // sub r5, r4, #1
- .long 0xeea05b90 // vdup.32 q8, r5
- .long 0xe2425001 // sub r5, r2, #1
- .long 0xf3fb0660 // vcvt.f32.s32 q8, q8
- .long 0xeeac2b90 // vdup.32 q14, r2
- .long 0xeea25b90 // vdup.32 q9, r5
- .long 0xe24e5001 // sub r5, lr, #1
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xe28de090 // add lr, sp, #144
- .long 0xeea45b90 // vdup.32 q10, r5
- .long 0xf340edd2 // vmul.f32 q15, q8, q1
- .long 0xf22c21fc // vorr q1, q14, q14
- .long 0xf3426dd4 // vmul.f32 q11, q9, q2
- .long 0xf3fb2664 // vcvt.f32.s32 q9, q10
- .long 0xee042b90 // vmov.32 d20[0], r2
- .long 0xf3fb076e // vcvt.s32.f32 q8, q15
- .long 0xf3fba766 // vcvt.s32.f32 q13, q11
- .long 0xecce6b04 // vstmia lr, {d22-d23}
- .long 0xe28de060 // add lr, sp, #96
- .long 0xf3428dd0 // vmul.f32 q12, q9, q0
- .long 0xee064b90 // vmov.32 d22[0], r4
- .long 0xf22a01fa // vorr q0, q13, q13
- .long 0xf22c09e0 // vmla.i32 q0, q14, q8
- .long 0xf22649f4 // vmul.i32 q2, q11, q10
- .long 0xf26a21fa // vorr q9, q13, q13
- .long 0xf260a1f0 // vorr q13, q8, q8
- .long 0xf3fb0768 // vcvt.s32.f32 q8, q12
- .long 0xecce2b04 // vstmia lr, {d18-d19}
- .long 0xe28de020 // add lr, sp, #32
- .long 0xf260c150 // vorr q14, q0, q0
- .long 0xf2c04052 // vmov.i32 q10, #2
- .long 0xec8e2b04 // vstmia lr, {d2-d3}
- .long 0xe28de040 // add lr, sp, #64
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xf3e0c0c4 // vmla.i32 q14, q8, d4[0]
- .long 0xf22081f0 // vorr q4, q8, q8
- .long 0xf2c00053 // vmov.i32 q8, #3
- .long 0xf222a1f2 // vorr q5, q9, q9
- .long 0xf26c49e0 // vmla.i32 q10, q14, q8
- .long 0xf22ce1fc // vorr q7, q14, q14
- .long 0xec8eeb04 // vstmia lr, {d14-d15}
- .long 0xe28de010 // add lr, sp, #16
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd5da00 // vldr s27, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xed92da00 // vldr s26, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xedd2ca00 // vldr s25, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed92ca00 // vldr s24, [r2]
- .long 0xe28f2e3f // add r2, pc, #1008
- .long 0xf462cacf // vld1.64 {d28-d29}, [r2]
- .long 0xf2484dec // vadd.f32 q10, q12, q14
- .long 0xf3fb0764 // vcvt.s32.f32 q8, q10
- .long 0xf2c04052 // vmov.i32 q10, #2
- .long 0xf3a000c4 // vmla.i32 q0, q8, d4[0]
- .long 0xecce0b04 // vstmia lr, {d16-d17}
- .long 0xe28de030 // add lr, sp, #48
- .long 0xf2604966 // vmla.i32 q10, q0, q11
- .long 0xf2206150 // vorr q3, q0, q0
- .long 0xec8e6b04 // vstmia lr, {d6-d7}
- .long 0xe28de050 // add lr, sp, #80
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd51a00 // vldr s3, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xf2604d4c // vsub.f32 q10, q0, q6
- .long 0xf3bb0648 // vcvt.f32.s32 q0, q4
- .long 0xf2688dc0 // vsub.f32 q12, q12, q0
- .long 0xf204ccf8 // vfma.f32 q6, q10, q12
- .long 0xf24e4dec // vadd.f32 q10, q15, q14
- .long 0xf3fb4764 // vcvt.s32.f32 q10, q10
- .long 0xf222a964 // vmla.i32 q5, q1, q10
- .long 0xecce4b04 // vstmia lr, {d20-d21}
- .long 0xe28de080 // add lr, sp, #128
- .long 0xf2c04052 // vmov.i32 q10, #2
- .long 0xf26a215a // vorr q9, q5, q5
- .long 0xf3e82044 // vmla.i32 q9, q4, d4[0]
- .long 0xf3a0a0c4 // vmla.i32 q5, q8, d4[0]
- .long 0xf26249e6 // vmla.i32 q10, q9, q11
- .long 0xecce2b04 // vstmia lr, {d18-d19}
- .long 0xe28de080 // add lr, sp, #128
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd53a00 // vldr s7, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xf2c04052 // vmov.i32 q10, #2
- .long 0xf26a4966 // vmla.i32 q10, q5, q11
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xf2c06051 // vmov.i32 q11, #1
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd51a00 // vldr s3, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xf2604d42 // vsub.f32 q10, q0, q1
- .long 0xf3bb066a // vcvt.f32.s32 q0, q13
- .long 0xf2042cf8 // vfma.f32 q1, q10, q12
- .long 0xf26e0dc0 // vsub.f32 q8, q15, q0
- .long 0xf26021f0 // vorr q9, q8, q8
- .long 0xf2624d4c // vsub.f32 q10, q1, q6
- .long 0xeccd2b04 // vstmia sp, {d18-d19}
- .long 0xf204ccf0 // vfma.f32 q6, q10, q8
- .long 0xf2c00053 // vmov.i32 q8, #3
- .long 0xf2c04051 // vmov.i32 q10, #1
- .long 0xf26e4960 // vmla.i32 q10, q7, q8
- .long 0xf280e053 // vmov.i32 q7, #3
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd53a00 // vldr s7, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xf2c04051 // vmov.i32 q10, #1
- .long 0xf2664960 // vmla.i32 q10, q3, q8
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de090 // add lr, sp, #144
- .long 0xf22861f8 // vorr q3, q12, q12
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd51a00 // vldr s3, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xf2604d42 // vsub.f32 q10, q0, q1
- .long 0xf2042cf8 // vfma.f32 q1, q10, q12
- .long 0xf2c04051 // vmov.i32 q10, #1
- .long 0xf26049ce // vmla.i32 q10, q8, q7
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de020 // add lr, sp, #32
- .long 0xf2c08053 // vmov.i32 q12, #3
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd51a00 // vldr s3, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xf2c04051 // vmov.i32 q10, #1
- .long 0xf26a494e // vmla.i32 q10, q5, q7
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee355b90 // vmov.32 r5, d21[1]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd5fa00 // vldr s31, [r5]
- .long 0xee345b90 // vmov.32 r5, d20[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed92fa00 // vldr s30, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee145b90 // vmov.32 r5, d20[0]
- .long 0xedd2ea00 // vldr s29, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed92ea00 // vldr s28, [r2]
- .long 0xf26e4d40 // vsub.f32 q10, q7, q0
- .long 0xf2040cd6 // vfma.f32 q0, q10, q3
- .long 0xf2604d42 // vsub.f32 q10, q0, q1
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xf2042cf2 // vfma.f32 q1, q10, q9
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28de010 // add lr, sp, #16
- .long 0xf2404dec // vadd.f32 q10, q8, q14
- .long 0xf2c00051 // vmov.i32 q8, #1
- .long 0xf3fbe764 // vcvt.s32.f32 q15, q10
- .long 0xecde4b04 // vldmia lr, {d20-d21}
- .long 0xe28de050 // add lr, sp, #80
- .long 0xf26ec1fe // vorr q14, q15, q15
- .long 0xf262c9ea // vmla.i32 q14, q9, q13
- .long 0xf268a158 // vorr q13, q4, q4
- .long 0xf22ce1fc // vorr q7, q14, q14
- .long 0xf3aae0c4 // vmla.i32 q7, q13, d4[0]
- .long 0xf3e4c0c4 // vmla.i32 q14, q10, d4[0]
- .long 0xf22e0968 // vmla.i32 q0, q7, q12
- .long 0xf26c09e8 // vmla.i32 q8, q14, q12
- .long 0xf2c08053 // vmov.i32 q12, #3
- .long 0xee315b10 // vmov.32 r5, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd59a00 // vldr s19, [r5]
- .long 0xee305b10 // vmov.32 r5, d0[1]
- .long 0xed929a00 // vldr s18, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee105b10 // vmov.32 r5, d0[0]
- .long 0xedd28a00 // vldr s17, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee315b90 // vmov.32 r5, d17[1]
- .long 0xed928a00 // vldr s16, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd51a00 // vldr s3, [r5]
- .long 0xee305b90 // vmov.32 r5, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee105b90 // vmov.32 r5, d16[0]
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xf2600d48 // vsub.f32 q8, q0, q4
- .long 0xf2008cd6 // vfma.f32 q4, q8, q3
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de040 // add lr, sp, #64
- .long 0xf262e9e0 // vmla.i32 q15, q9, q8
- .long 0xf26e01fe // vorr q8, q15, q15
- .long 0xf3ea00c4 // vmla.i32 q8, q13, d4[0]
- .long 0xf2c0a051 // vmov.i32 q13, #1
- .long 0xf3e4e0c4 // vmla.i32 q15, q10, d4[0]
- .long 0xf260a9e8 // vmla.i32 q13, q8, q12
- .long 0xf26e69e8 // vmla.i32 q11, q15, q12
- .long 0xf2664156 // vorr q10, q3, q3
- .long 0xee3b5b90 // vmov.32 r5, d27[1]
- .long 0xee1b2b90 // vmov.32 r2, d27[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd51a00 // vldr s3, [r5]
- .long 0xee3a5b90 // vmov.32 r5, d26[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee1a5b90 // vmov.32 r5, d26[0]
- .long 0xecddab04 // vldmia sp, {d26-d27}
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee375b90 // vmov.32 r5, d23[1]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xee172b90 // vmov.32 r2, d23[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd55a00 // vldr s11, [r5]
- .long 0xee365b90 // vmov.32 r5, d22[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee165b90 // vmov.32 r5, d22[0]
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xf2642d40 // vsub.f32 q9, q2, q0
- .long 0xf2020cd6 // vfma.f32 q0, q9, q3
- .long 0xf2602d48 // vsub.f32 q9, q0, q4
- .long 0xf2028cfa // vfma.f32 q4, q9, q13
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28de030 // add lr, sp, #48
- .long 0xf26229f6 // vmul.i32 q9, q9, q11
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd51a00 // vldr s3, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28de080 // add lr, sp, #128
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xf26229f6 // vmul.i32 q9, q9, q11
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd55a00 // vldr s11, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xea000004 // b 73f0 <sk_clut_3D_vfp4+0x508>
- .long 0xe320f000 // nop {0}
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xf2642d40 // vsub.f32 q9, q2, q0
- .long 0xf2020cf4 // vfma.f32 q0, q9, q10
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xf26229f6 // vmul.i32 q9, q9, q11
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd55a00 // vldr s11, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xf26a2976 // vmul.i32 q9, q5, q11
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd57a00 // vldr s15, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed927a00 // vldr s14, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xedd26a00 // vldr s13, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xf2662d44 // vsub.f32 q9, q3, q2
- .long 0xf2024cf4 // vfma.f32 q2, q9, q10
- .long 0xf2642d40 // vsub.f32 q9, q2, q0
- .long 0xf2020cfa // vfma.f32 q0, q9, q13
- .long 0xf26e2976 // vmul.i32 q9, q7, q11
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd57a00 // vldr s15, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xed927a00 // vldr s14, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xf26c29f6 // vmul.i32 q9, q14, q11
- .long 0xedd26a00 // vldr s13, [r2]
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd55a00 // vldr s11, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xf2642d46 // vsub.f32 q9, q2, q3
- .long 0xf2026cf4 // vfma.f32 q3, q9, q10
- .long 0xf26029f6 // vmul.i32 q9, q8, q11
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd55a00 // vldr s11, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xf26e29f6 // vmul.i32 q9, q15, q11
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd5ba00 // vldr s23, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed92ba00 // vldr s22, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xedd2aa00 // vldr s21, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed92aa00 // vldr s20, [r2]
- .long 0xf26a2d44 // vsub.f32 q9, q5, q2
- .long 0xf2024cf4 // vfma.f32 q2, q9, q10
- .long 0xf2642d46 // vsub.f32 q9, q2, q3
- .long 0xf2026cfa // vfma.f32 q3, q9, q13
- .long 0xf2c02052 // vmov.i32 q9, #2
- .long 0xf26e2966 // vmla.i32 q9, q7, q11
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd5ba00 // vldr s23, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xed92ba00 // vldr s22, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xf2c02052 // vmov.i32 q9, #2
- .long 0xf26c29e6 // vmla.i32 q9, q14, q11
- .long 0xedd2aa00 // vldr s21, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xed92aa00 // vldr s20, [r2]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd55a00 // vldr s11, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xf2642d4a // vsub.f32 q9, q2, q5
- .long 0xf202acf4 // vfma.f32 q5, q9, q10
- .long 0xf2c02052 // vmov.i32 q9, #2
- .long 0xf26029e6 // vmla.i32 q9, q8, q11
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26e09e6 // vmla.i32 q8, q15, q11
- .long 0xee335b90 // vmov.32 r5, d19[1]
- .long 0xee132b90 // vmov.32 r2, d19[0]
- .long 0xee314b90 // vmov.32 r4, d17[1]
- .long 0xee10eb90 // vmov.32 lr, d16[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd55a00 // vldr s11, [r5]
- .long 0xee325b90 // vmov.32 r5, d18[1]
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0834104 // add r4, r3, r4, lsl #2
- .long 0xedd4fa00 // vldr s31, [r4]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee125b90 // vmov.32 r5, d18[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832105 // add r2, r3, r5, lsl #2
- .long 0xee305b90 // vmov.32 r5, d16[1]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed92fa00 // vldr s30, [r2]
- .long 0xe083210e // add r2, r3, lr, lsl #2
- .long 0xe28de060 // add lr, sp, #96
- .long 0xedd5ea00 // vldr s29, [r5]
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28de090 // add lr, sp, #144
- .long 0xed92ea00 // vldr s28, [r2]
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf26e0d44 // vsub.f32 q8, q7, q2
- .long 0xf2004cf4 // vfma.f32 q2, q8, q10
- .long 0xf2684d42 // vsub.f32 q10, q4, q1
- .long 0xf2640d4a // vsub.f32 q8, q2, q5
- .long 0xf200acfa // vfma.f32 q5, q8, q13
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de070 // add lr, sp, #112
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xf2662d40 // vsub.f32 q9, q3, q0
- .long 0xec9e6b04 // vldmia lr, {d6-d7}
- .long 0xf2042cf0 // vfma.f32 q1, q10, q8
- .long 0xf26a6d4c // vsub.f32 q11, q5, q6
- .long 0xf2020cf0 // vfma.f32 q0, q9, q8
- .long 0xf206ccf0 // vfma.f32 q6, q11, q8
- .long 0xf22c415c // vorr q2, q6, q6
- .long 0xe28dd0a0 // add sp, sp, #160
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd4830 // pop {r4, r5, fp, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
-
-HIDDEN _sk_clut_4D_vfp4
-.globl _sk_clut_4D_vfp4
-FUNCTION(_sk_clut_4D_vfp4)
-_sk_clut_4D_vfp4:
- .long 0xe92d41f0 // push {r4, r5, r6, r7, r8, lr}
- .long 0xed2d8b10 // vpush {d8-d15}
- .long 0xe24ddf6a // sub sp, sp, #424
- .long 0xe8911004 // ldm r1, {r2, ip}
- .long 0xf2c0c052 // vmov.i32 q14, #2
- .long 0xe2811008 // add r1, r1, #8
- .long 0xe8924008 // ldm r2, {r3, lr}
- .long 0xe592500c // ldr r5, [r2, #12]
- .long 0xe5924008 // ldr r4, [r2, #8]
- .long 0xe5922010 // ldr r2, [r2, #16]
- .long 0xee025b90 // vmov.32 d18[0], r5
- .long 0xe2455001 // sub r5, r5, #1
- .long 0xe2426001 // sub r6, r2, #1
- .long 0xeea65b90 // vdup.32 q11, r5
- .long 0xe2445001 // sub r5, r4, #1
- .long 0xeea46b90 // vdup.32 q10, r6
- .long 0xf3fb6666 // vcvt.f32.s32 q11, q11
- .long 0xee002b90 // vmov.32 d16[0], r2
- .long 0xe24e6001 // sub r6, lr, #1
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xe28dee19 // add lr, sp, #400
- .long 0xf222e9f0 // vmul.i32 q7, q9, q8
- .long 0xeea25b90 // vdup.32 q9, r5
- .long 0xe28d5d06 // add r5, sp, #384
- .long 0xf3448dd6 // vmul.f32 q12, q10, q3
- .long 0xeea46b90 // vdup.32 q10, r6
- .long 0xf3460dd4 // vmul.f32 q8, q11, q2
- .long 0xee064b90 // vmov.32 d22[0], r4
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xf3fb4664 // vcvt.f32.s32 q10, q10
- .long 0xecc58b04 // vstmia r5, {d24-d25}
- .long 0xf3fba768 // vcvt.s32.f32 q13, q12
- .long 0xecce0b04 // vstmia lr, {d16-d17}
- .long 0xf3fb0760 // vcvt.s32.f32 q8, q8
- .long 0xe28dee13 // add lr, sp, #304
- .long 0xf3022dd2 // vmul.f32 q1, q9, q1
- .long 0xf22669de // vmul.i32 q3, q11, q7
- .long 0xeea62b90 // vdup.32 q11, r2
- .long 0xecce0b04 // vstmia lr, {d16-d17}
- .long 0xe28dee17 // add lr, sp, #368
- .long 0xf26a21fa // vorr q9, q13, q13
- .long 0xf26629e0 // vmla.i32 q9, q11, q8
- .long 0xecceab04 // vstmia lr, {d26-d27}
- .long 0xe28de0f0 // add lr, sp, #240
- .long 0xf3bb4742 // vcvt.s32.f32 q2, q1
- .long 0xecce6b04 // vstmia lr, {d22-d23}
- .long 0xe28dee11 // add lr, sp, #272
- .long 0xf3448dd0 // vmul.f32 q12, q10, q0
- .long 0xf2c04053 // vmov.i32 q10, #3
- .long 0xf26261f2 // vorr q11, q9, q9
- .long 0xf3e4604e // vmla.i32 q11, q2, d14[0]
- .long 0xf3fba768 // vcvt.s32.f32 q13, q12
- .long 0xf26601f6 // vorr q8, q11, q11
- .long 0xf3ea00c6 // vmla.i32 q8, q13, d6[0]
- .long 0xf22681f6 // vorr q4, q11, q11
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xf22aa1fa // vorr q5, q13, q13
- .long 0xf260c9e4 // vmla.i32 q14, q8, q10
- .long 0xecce0b04 // vstmia lr, {d16-d17}
- .long 0xe28dee16 // add lr, sp, #352
- .long 0xee3d6b90 // vmov.32 r6, d29[1]
- .long 0xee1d2b90 // vmov.32 r2, d29[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd61a00 // vldr s3, [r6]
- .long 0xee3c6b90 // vmov.32 r6, d28[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee1c6b90 // vmov.32 r6, d28[0]
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xe28f2e3f // add r2, pc, #1008
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xf248cde0 // vadd.f32 q14, q12, q8
- .long 0xf220c150 // vorr q6, q0, q0
- .long 0xf2800052 // vmov.i32 q0, #2
- .long 0xf3fb476c // vcvt.s32.f32 q10, q14
- .long 0xf3a480c6 // vmla.i32 q4, q10, d6[0]
- .long 0xf264c1f4 // vorr q14, q10, q10
- .long 0xf2280966 // vmla.i32 q0, q4, q11
- .long 0xec8e8b04 // vstmia lr, {d8-d9}
- .long 0xe28dec01 // add lr, sp, #256
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd69a00 // vldr s19, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed929a00 // vldr s18, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd28a00 // vldr s17, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed928a00 // vldr s16, [r2]
- .long 0xf2280d4c // vsub.f32 q0, q4, q6
- .long 0xf3bb864a // vcvt.f32.s32 q4, q5
- .long 0xf2684dc8 // vsub.f32 q10, q12, q4
- .long 0xf200cc74 // vfma.f32 q6, q0, q10
- .long 0xf2020d60 // vadd.f32 q0, q1, q8
- .long 0xf26481f4 // vorr q12, q10, q10
- .long 0xf26041f0 // vorr q10, q8, q8
- .long 0xf3fb0740 // vcvt.s32.f32 q8, q0
- .long 0xecce4b04 // vstmia lr, {d20-d21}
- .long 0xe28de050 // add lr, sp, #80
- .long 0xf22201f2 // vorr q0, q9, q9
- .long 0xf26a215a // vorr q9, q5, q5
- .long 0xf3a000ce // vmla.i32 q0, q8, d14[0]
- .long 0xecce0b04 // vstmia lr, {d16-d17}
- .long 0xe28dee15 // add lr, sp, #336
- .long 0xf260a150 // vorr q13, q0, q0
- .long 0xf3eaa046 // vmla.i32 q13, q5, d6[0]
- .long 0xf2208150 // vorr q4, q0, q0
- .long 0xf2800052 // vmov.i32 q0, #2
- .long 0xf3ac80c6 // vmla.i32 q4, q14, d6[0]
- .long 0xecceab04 // vstmia lr, {d26-d27}
- .long 0xe28dee12 // add lr, sp, #288
- .long 0xf22a09e6 // vmla.i32 q0, q13, q11
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd6ba00 // vldr s23, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed92ba00 // vldr s22, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xf2800052 // vmov.i32 q0, #2
- .long 0xf2280966 // vmla.i32 q0, q4, q11
- .long 0xedd2aa00 // vldr s21, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xed92aa00 // vldr s20, [r2]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xec8e8b04 // vstmia lr, {d8-d9}
- .long 0xe28de060 // add lr, sp, #96
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd69a00 // vldr s19, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed929a00 // vldr s18, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd28a00 // vldr s17, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed928a00 // vldr s16, [r2]
- .long 0xec8e4b04 // vstmia lr, {d4-d5}
- .long 0xe28dee19 // add lr, sp, #400
- .long 0xf2280d4a // vsub.f32 q0, q4, q5
- .long 0xecde6b04 // vldmia lr, {d22-d23}
- .long 0xe28de0c0 // add lr, sp, #192
- .long 0xf3bb8644 // vcvt.f32.s32 q4, q2
- .long 0xf200ac78 // vfma.f32 q5, q0, q12
- .long 0xf262ed48 // vsub.f32 q15, q1, q4
- .long 0xf22a0d4c // vsub.f32 q0, q5, q6
- .long 0xf200cc7e // vfma.f32 q6, q0, q15
- .long 0xf2060de4 // vadd.f32 q0, q11, q10
- .long 0xf3fba740 // vcvt.s32.f32 q13, q0
- .long 0xecceab04 // vstmia lr, {d26-d27}
- .long 0xe28dee17 // add lr, sp, #368
- .long 0xec9e2b04 // vldmia lr, {d2-d3}
- .long 0xe28de0f0 // add lr, sp, #240
- .long 0xecde4b04 // vldmia lr, {d20-d21}
- .long 0xe28de030 // add lr, sp, #48
- .long 0xec8eeb04 // vstmia lr, {d14-d15}
- .long 0xe28de040 // add lr, sp, #64
- .long 0xf22429ea // vmla.i32 q1, q10, q13
- .long 0xecce2b04 // vstmia lr, {d18-d19}
- .long 0xe28de0b0 // add lr, sp, #176
- .long 0xf2c04053 // vmov.i32 q10, #3
- .long 0xf2220152 // vorr q0, q1, q1
- .long 0xf3a4004e // vmla.i32 q0, q2, d14[0]
- .long 0xf222a152 // vorr q5, q1, q1
- .long 0xf3a0a0ce // vmla.i32 q5, q8, d14[0]
- .long 0xf260a150 // vorr q13, q0, q0
- .long 0xf3e2a0c6 // vmla.i32 q13, q9, d6[0]
- .long 0xf2204150 // vorr q2, q0, q0
- .long 0xf2800052 // vmov.i32 q0, #2
- .long 0xf3ac40c6 // vmla.i32 q2, q14, d6[0]
- .long 0xecceab04 // vstmia lr, {d26-d27}
- .long 0xe28de020 // add lr, sp, #32
- .long 0xf22a09e4 // vmla.i32 q0, q13, q10
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xf2800052 // vmov.i32 q0, #2
- .long 0xf2240964 // vmla.i32 q0, q2, q10
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xf2c04053 // vmov.i32 q10, #3
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xeccecb04 // vstmia lr, {d28-d29}
- .long 0xe28de0a0 // add lr, sp, #160
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xec8e4b04 // vstmia lr, {d4-d5}
- .long 0xe28ded05 // add lr, sp, #320
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd69a00 // vldr s19, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed929a00 // vldr s18, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd28a00 // vldr s17, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed928a00 // vldr s16, [r2]
- .long 0xf2280d42 // vsub.f32 q0, q4, q1
- .long 0xf22a815a // vorr q4, q5, q5
- .long 0xf3a280c6 // vmla.i32 q4, q9, d6[0]
- .long 0xf2002c78 // vfma.f32 q1, q0, q12
- .long 0xf2800052 // vmov.i32 q0, #2
- .long 0xf3aca0c6 // vmla.i32 q5, q14, d6[0]
- .long 0xec8e8b04 // vstmia lr, {d8-d9}
- .long 0xe28de090 // add lr, sp, #144
- .long 0xf2280964 // vmla.i32 q0, q4, q10
- .long 0xf26e21fe // vorr q9, q15, q15
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd6fa00 // vldr s31, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed92fa00 // vldr s30, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xf2800052 // vmov.i32 q0, #2
- .long 0xf22a0964 // vmla.i32 q0, q5, q10
- .long 0xedd2ea00 // vldr s29, [r2]
- .long 0xf26a415a // vorr q10, q5, q5
- .long 0xf228a1f8 // vorr q5, q12, q12
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xed92ea00 // vldr s28, [r2]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xecce4b04 // vstmia lr, {d20-d21}
- .long 0xe28dee13 // add lr, sp, #304
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28dee19 // add lr, sp, #400
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd69a00 // vldr s19, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed929a00 // vldr s18, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd28a00 // vldr s17, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed928a00 // vldr s16, [r2]
- .long 0xf2280d4e // vsub.f32 q0, q4, q7
- .long 0xf200ec78 // vfma.f32 q7, q0, q12
- .long 0xf2c08053 // vmov.i32 q12, #3
- .long 0xf22e0d42 // vsub.f32 q0, q7, q1
- .long 0xf2002c72 // vfma.f32 q1, q0, q9
- .long 0xf2220d4c // vsub.f32 q0, q1, q6
- .long 0xf3bb2660 // vcvt.f32.s32 q1, q8
- .long 0xf2660dc2 // vsub.f32 q8, q11, q1
- .long 0xf200cc70 // vfma.f32 q6, q0, q8
- .long 0xf26061f0 // vorr q11, q8, q8
- .long 0xf2c00053 // vmov.i32 q8, #3
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xecce6b04 // vstmia lr, {d22-d23}
- .long 0xe28de0e0 // add lr, sp, #224
- .long 0xec8ecb04 // vstmia lr, {d12-d13}
- .long 0xe28dee11 // add lr, sp, #272
- .long 0xecdecb04 // vldmia lr, {d28-d29}
- .long 0xe28dee16 // add lr, sp, #352
- .long 0xecdeeb04 // vldmia lr, {d30-d31}
- .long 0xe28dee15 // add lr, sp, #336
- .long 0xf22c09e0 // vmla.i32 q0, q14, q8
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xf22e09e0 // vmla.i32 q0, q15, q8
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xecdeeb04 // vldmia lr, {d30-d31}
- .long 0xe28dee12 // add lr, sp, #288
- .long 0xf2c00053 // vmov.i32 q8, #3
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xf2228152 // vorr q4, q1, q1
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2220d48 // vsub.f32 q0, q1, q4
- .long 0xf2802051 // vmov.i32 q1, #1
- .long 0xf22e29e0 // vmla.i32 q1, q15, q8
- .long 0xecdeeb04 // vldmia lr, {d30-d31}
- .long 0xe28ded05 // add lr, sp, #320
- .long 0xf2008c5a // vfma.f32 q4, q0, q5
- .long 0xee336b10 // vmov.32 r6, d3[1]
- .long 0xee132b10 // vmov.32 r2, d3[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd61a00 // vldr s3, [r6]
- .long 0xee326b10 // vmov.32 r6, d2[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee126b10 // vmov.32 r6, d2[0]
- .long 0xf2802051 // vmov.i32 q1, #1
- .long 0xf22e29e0 // vmla.i32 q1, q15, q8
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xea000004 // b 7bf0 <sk_clut_4D_vfp4+0x528>
- .long 0xe320f000 // nop {0}
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0x3f7ff972 // .word 0x3f7ff972
- .long 0xf2c00053 // vmov.i32 q8, #3
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee336b10 // vmov.32 r6, d3[1]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xee132b10 // vmov.32 r2, d3[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd6fa00 // vldr s31, [r6]
- .long 0xee326b10 // vmov.32 r6, d2[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed92fa00 // vldr s30, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee126b10 // vmov.32 r6, d2[0]
- .long 0xedd2ea00 // vldr s29, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed92ea00 // vldr s28, [r2]
- .long 0xeccd2b04 // vstmia sp, {d18-d19}
- .long 0xf22e2d40 // vsub.f32 q1, q7, q0
- .long 0xf2020c5a // vfma.f32 q0, q1, q5
- .long 0xf2200d48 // vsub.f32 q0, q0, q4
- .long 0xf2008c72 // vfma.f32 q4, q0, q9
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xf22a09e0 // vmla.i32 q0, q13, q8
- .long 0xecdeab04 // vldmia lr, {d26-d27}
- .long 0xe28de0d0 // add lr, sp, #208
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd6fa00 // vldr s31, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed92fa00 // vldr s30, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xf2240960 // vmla.i32 q0, q2, q8
- .long 0xedd2ea00 // vldr s29, [r2]
- .long 0xf2c00053 // vmov.i32 q8, #3
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xed92ea00 // vldr s28, [r2]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2220d4e // vsub.f32 q0, q1, q7
- .long 0xf2802051 // vmov.i32 q1, #1
- .long 0xf22a29e0 // vmla.i32 q1, q13, q8
- .long 0xf200ec5a // vfma.f32 q7, q0, q5
- .long 0xee336b10 // vmov.32 r6, d3[1]
- .long 0xee132b10 // vmov.32 r2, d3[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xee326b10 // vmov.32 r6, d2[1]
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee126b10 // vmov.32 r6, d2[0]
- .long 0xf2802051 // vmov.i32 q1, #1
- .long 0xf22429e0 // vmla.i32 q1, q10, q8
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee336b10 // vmov.32 r6, d3[1]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xee132b10 // vmov.32 r2, d3[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd61a00 // vldr s3, [r6]
- .long 0xee326b10 // vmov.32 r6, d2[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee126b10 // vmov.32 r6, d2[0]
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xf2200d44 // vsub.f32 q0, q0, q2
- .long 0xf2004c5a // vfma.f32 q2, q0, q5
- .long 0xf2240d4e // vsub.f32 q0, q2, q7
- .long 0xf200ec72 // vfma.f32 q7, q0, q9
- .long 0xf22e0d48 // vsub.f32 q0, q7, q4
- .long 0xf280e053 // vmov.i32 q7, #3
- .long 0xf2008c76 // vfma.f32 q4, q0, q11
- .long 0xec8e8b04 // vstmia lr, {d8-d9}
- .long 0xe28ded06 // add lr, sp, #384
- .long 0xec9e0b04 // vldmia lr, {d0-d1}
- .long 0xe28dec01 // add lr, sp, #256
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28dee13 // add lr, sp, #304
- .long 0xecdeab04 // vldmia lr, {d26-d27}
- .long 0xe28de0f0 // add lr, sp, #240
- .long 0xf240ed60 // vadd.f32 q15, q0, q8
- .long 0xecde4b04 // vldmia lr, {d20-d21}
- .long 0xe28de030 // add lr, sp, #48
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xec9e4b04 // vldmia lr, {d4-d5}
- .long 0xe28de060 // add lr, sp, #96
- .long 0xf3fb676e // vcvt.s32.f32 q11, q15
- .long 0xecdecb04 // vldmia lr, {d28-d29}
- .long 0xe28de040 // add lr, sp, #64
- .long 0xf26601f6 // vorr q8, q11, q11
- .long 0xf26409ea // vmla.i32 q8, q10, q13
- .long 0xf260a1f0 // vorr q13, q8, q8
- .long 0xf3eca0c4 // vmla.i32 q13, q14, d4[0]
- .long 0xf22081f0 // vorr q4, q8, q8
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de080 // add lr, sp, #128
- .long 0xf26a21fa // vorr q9, q13, q13
- .long 0xf3e020c6 // vmla.i32 q9, q8, d6[0]
- .long 0xf22209e8 // vmla.i32 q0, q9, q12
- .long 0xecce2b04 // vstmia lr, {d18-d19}
- .long 0xe28de020 // add lr, sp, #32
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28de070 // add lr, sp, #112
- .long 0xf3e2a0c6 // vmla.i32 q13, q9, d6[0]
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd6da00 // vldr s27, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed92da00 // vldr s26, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xf22a09e8 // vmla.i32 q0, q13, q12
- .long 0xedd2ca00 // vldr s25, [r2]
- .long 0xf2688158 // vorr q12, q4, q4
- .long 0xf2248154 // vorr q4, q2, q2
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xed92ca00 // vldr s24, [r2]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xecceab04 // vstmia lr, {d26-d27}
- .long 0xe28de050 // add lr, sp, #80
- .long 0xecdeeb04 // vldmia lr, {d30-d31}
- .long 0xe28dec01 // add lr, sp, #256
- .long 0xf3ee80c4 // vmla.i32 q12, q15, d4[0]
- .long 0xf268a1f8 // vorr q13, q12, q12
- .long 0xf3e0a0c6 // vmla.i32 q13, q8, d6[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xf3e280c6 // vmla.i32 q12, q9, d6[0]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xecceab04 // vstmia lr, {d26-d27}
- .long 0xe28de010 // add lr, sp, #16
- .long 0xf2220d4c // vsub.f32 q0, q1, q6
- .long 0xf2802051 // vmov.i32 q1, #1
- .long 0xf22a29ce // vmla.i32 q1, q13, q7
- .long 0xf200cc5a // vfma.f32 q6, q0, q5
- .long 0xee336b10 // vmov.32 r6, d3[1]
- .long 0xee132b10 // vmov.32 r2, d3[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd61a00 // vldr s3, [r6]
- .long 0xee326b10 // vmov.32 r6, d2[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee126b10 // vmov.32 r6, d2[0]
- .long 0xf2802051 // vmov.i32 q1, #1
- .long 0xf22829ce // vmla.i32 q1, q12, q7
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee336b10 // vmov.32 r6, d3[1]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xee132b10 // vmov.32 r2, d3[0]
- .long 0xecce8b04 // vstmia lr, {d24-d25}
- .long 0xe28de0c0 // add lr, sp, #192
- .long 0xecdeab04 // vldmia lr, {d26-d27}
- .long 0xe28de0c0 // add lr, sp, #192
- .long 0xecdd8b04 // vldmia sp, {d24-d25}
- .long 0xf26469ea // vmla.i32 q11, q10, q13
- .long 0xf266a1f6 // vorr q13, q11, q11
- .long 0xf3eca0c8 // vmla.i32 q13, q14, d8[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xee326b10 // vmov.32 r6, d2[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xf3ee60c8 // vmla.i32 q11, q15, d8[0]
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xf26a41fa // vorr q10, q13, q13
- .long 0xf3e040c6 // vmla.i32 q10, q8, d6[0]
- .long 0xf3e2a0c6 // vmla.i32 q13, q9, d6[0]
- .long 0xf26ac15a // vorr q14, q5, q5
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee126b10 // vmov.32 r6, d2[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xecce4b04 // vstmia lr, {d20-d21}
- .long 0xe28dee13 // add lr, sp, #304
- .long 0xf2242d40 // vsub.f32 q1, q2, q0
- .long 0xf2020c5a // vfma.f32 q0, q1, q5
- .long 0xf2200d4c // vsub.f32 q0, q0, q6
- .long 0xf200cc78 // vfma.f32 q6, q0, q12
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xf22409ce // vmla.i32 q0, q10, q7
- .long 0xf2c04051 // vmov.i32 q10, #1
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xf2800051 // vmov.i32 q0, #1
- .long 0xf22a09ce // vmla.i32 q0, q13, q7
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b10 // vmov.32 r6, d1[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee112b10 // vmov.32 r2, d1[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xee306b10 // vmov.32 r6, d0[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b10 // vmov.32 r6, d0[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xf2240d42 // vsub.f32 q0, q2, q1
- .long 0xf2002c5a // vfma.f32 q1, q0, q5
- .long 0xf22601f6 // vorr q0, q11, q11
- .long 0xf3a000c6 // vmla.i32 q0, q8, d6[0]
- .long 0xf3e260c6 // vmla.i32 q11, q9, d6[0]
- .long 0xf260494e // vmla.i32 q10, q0, q7
- .long 0xec8e0b04 // vstmia lr, {d0-d1}
- .long 0xe28de0f0 // add lr, sp, #240
- .long 0xf2c00051 // vmov.i32 q8, #1
- .long 0xf26609ce // vmla.i32 q8, q11, q7
- .long 0xee356b90 // vmov.32 r6, d21[1]
- .long 0xf2c02053 // vmov.i32 q9, #3
- .long 0xee152b90 // vmov.32 r2, d21[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd61a00 // vldr s3, [r6]
- .long 0xee346b90 // vmov.32 r6, d20[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee146b90 // vmov.32 r6, d20[0]
- .long 0xf2c04053 // vmov.i32 q10, #3
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xecce6b04 // vstmia lr, {d22-d23}
- .long 0xe28dee19 // add lr, sp, #400
- .long 0xecde6b04 // vldmia lr, {d22-d23}
- .long 0xe28dee11 // add lr, sp, #272
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xf2640d40 // vsub.f32 q8, q2, q0
- .long 0xf2000cda // vfma.f32 q0, q8, q5
- .long 0xf2600d42 // vsub.f32 q8, q0, q1
- .long 0xf2002cf8 // vfma.f32 q1, q8, q12
- .long 0xf2620d4c // vsub.f32 q8, q1, q6
- .long 0xf200ccf6 // vfma.f32 q6, q8, q11
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28dee16 // add lr, sp, #352
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd61a00 // vldr s3, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed921a00 // vldr s2, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28dee15 // add lr, sp, #336
- .long 0xedd20a00 // vldr s1, [r2]
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xf2c02053 // vmov.i32 q9, #3
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed920a00 // vldr s0, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2620d40 // vsub.f32 q8, q1, q0
- .long 0xf2000cda // vfma.f32 q0, q8, q5
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28dee12 // add lr, sp, #288
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de0b0 // add lr, sp, #176
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xf2640d42 // vsub.f32 q8, q2, q1
- .long 0xf2002cda // vfma.f32 q1, q8, q5
- .long 0xf2620d40 // vsub.f32 q8, q1, q0
- .long 0xf2000cf8 // vfma.f32 q0, q8, q12
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de0a0 // add lr, sp, #160
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28ded05 // add lr, sp, #320
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2620d44 // vsub.f32 q8, q1, q2
- .long 0xf2004cda // vfma.f32 q2, q8, q5
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de090 // add lr, sp, #144
- .long 0xf228a1f8 // vorr q5, q12, q12
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de080 // add lr, sp, #128
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xf26009f2 // vmul.i32 q8, q8, q9
- .long 0xf2c02053 // vmov.i32 q9, #3
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd67a00 // vldr s15, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed927a00 // vldr s14, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd26a00 // vldr s13, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xf2660d42 // vsub.f32 q8, q3, q1
- .long 0xf2002cfc // vfma.f32 q1, q8, q14
- .long 0xf2620d44 // vsub.f32 q8, q1, q2
- .long 0xf2004cf8 // vfma.f32 q2, q8, q12
- .long 0xecde8b04 // vldmia lr, {d24-d25}
- .long 0xe28de070 // add lr, sp, #112
- .long 0xec9e8b04 // vldmia lr, {d8-d9}
- .long 0xe28dec01 // add lr, sp, #256
- .long 0xf2640d40 // vsub.f32 q8, q2, q0
- .long 0xf2000cf6 // vfma.f32 q0, q8, q11
- .long 0xf26809f2 // vmul.i32 q8, q12, q9
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd65a00 // vldr s11, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed925a00 // vldr s10, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xf2680972 // vmul.i32 q8, q4, q9
- .long 0xedd24a00 // vldr s9, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed924a00 // vldr s8, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2620d44 // vsub.f32 q8, q1, q2
- .long 0xf2004cfc // vfma.f32 q2, q8, q14
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de010 // add lr, sp, #16
- .long 0xf26009f4 // vmul.i32 q8, q8, q10
- .long 0xec9eeb04 // vldmia lr, {d14-d15}
- .long 0xe28de0c0 // add lr, sp, #192
- .long 0xecdeeb04 // vldmia lr, {d30-d31}
- .long 0xe28dee13 // add lr, sp, #304
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xf26e0974 // vmul.i32 q8, q7, q10
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xf26a415a // vorr q10, q5, q5
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd67a00 // vldr s15, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed927a00 // vldr s14, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd26a00 // vldr s13, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xf2660d42 // vsub.f32 q8, q3, q1
- .long 0xf2002cfc // vfma.f32 q1, q8, q14
- .long 0xf2620d44 // vsub.f32 q8, q1, q2
- .long 0xf2004cda // vfma.f32 q2, q8, q5
- .long 0xf26e09f6 // vmul.i32 q8, q15, q11
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd6ba00 // vldr s23, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed92ba00 // vldr s22, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xf26a09f6 // vmul.i32 q8, q13, q11
- .long 0xedd2aa00 // vldr s21, [r2]
- .long 0xf2c06053 // vmov.i32 q11, #3
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed92aa00 // vldr s20, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2620d4a // vsub.f32 q8, q1, q5
- .long 0xf200acfc // vfma.f32 q5, q8, q14
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de0f0 // add lr, sp, #240
- .long 0xf26009f6 // vmul.i32 q8, q8, q11
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28dee19 // add lr, sp, #400
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xf26009f6 // vmul.i32 q8, q8, q11
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd67a00 // vldr s15, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed927a00 // vldr s14, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd26a00 // vldr s13, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xf2660d42 // vsub.f32 q8, q3, q1
- .long 0xf2002cfc // vfma.f32 q1, q8, q14
- .long 0xf2620d4a // vsub.f32 q8, q1, q5
- .long 0xec9e2b04 // vldmia lr, {d2-d3}
- .long 0xe28dec01 // add lr, sp, #256
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28dee13 // add lr, sp, #304
- .long 0xf200acf4 // vfma.f32 q5, q8, q10
- .long 0xf26a0d44 // vsub.f32 q8, q5, q2
- .long 0xf2004cd2 // vfma.f32 q2, q8, q1
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26809e6 // vmla.i32 q8, q12, q11
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd6ba00 // vldr s23, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed92ba00 // vldr s22, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf2680966 // vmla.i32 q8, q4, q11
- .long 0xedd2aa00 // vldr s21, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed92aa00 // vldr s20, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2620d4a // vsub.f32 q8, q1, q5
- .long 0xf200acfc // vfma.f32 q5, q8, q14
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26209e6 // vmla.i32 q8, q9, q11
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28de0f0 // add lr, sp, #240
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26e0966 // vmla.i32 q8, q7, q11
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd67a00 // vldr s15, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed927a00 // vldr s14, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd26a00 // vldr s13, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xf2660d42 // vsub.f32 q8, q3, q1
- .long 0xf2002cfc // vfma.f32 q1, q8, q14
- .long 0xf2620d4a // vsub.f32 q8, q1, q5
- .long 0xf200acf4 // vfma.f32 q5, q8, q10
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26e09e6 // vmla.i32 q8, q15, q11
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd6fa00 // vldr s31, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed92fa00 // vldr s30, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26a09e6 // vmla.i32 q8, q13, q11
- .long 0xedd2ea00 // vldr s29, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xed92ea00 // vldr s28, [r2]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xf2620d4e // vsub.f32 q8, q1, q7
- .long 0xf200ecfc // vfma.f32 q7, q8, q14
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26209e6 // vmla.i32 q8, q9, q11
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28dee17 // add lr, sp, #368
- .long 0xee316b90 // vmov.32 r6, d17[1]
- .long 0xee112b90 // vmov.32 r2, d17[0]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xedd63a00 // vldr s7, [r6]
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed923a00 // vldr s6, [r2]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee106b90 // vmov.32 r6, d16[0]
- .long 0xf2c00052 // vmov.i32 q8, #2
- .long 0xf26209e6 // vmla.i32 q8, q9, q11
- .long 0xedd22a00 // vldr s5, [r2]
- .long 0xecde2b04 // vldmia lr, {d18-d19}
- .long 0xe28dee19 // add lr, sp, #400
- .long 0xf3fb2662 // vcvt.f32.s32 q9, q9
- .long 0xee315b90 // vmov.32 r5, d17[1]
- .long 0xee114b90 // vmov.32 r4, d17[0]
- .long 0xe0832106 // add r2, r3, r6, lsl #2
- .long 0xee306b90 // vmov.32 r6, d16[1]
- .long 0xed922a00 // vldr s4, [r2]
- .long 0xee102b90 // vmov.32 r2, d16[0]
- .long 0xe0835105 // add r5, r3, r5, lsl #2
- .long 0xedd57a00 // vldr s15, [r5]
- .long 0xe0835104 // add r5, r3, r4, lsl #2
- .long 0xed957a00 // vldr s14, [r5]
- .long 0xe0836106 // add r6, r3, r6, lsl #2
- .long 0xedd66a00 // vldr s13, [r6]
- .long 0xe0832102 // add r2, r3, r2, lsl #2
- .long 0xed926a00 // vldr s12, [r2]
- .long 0xf2660d42 // vsub.f32 q8, q3, q1
- .long 0xf2002cfc // vfma.f32 q1, q8, q14
- .long 0xf2620d4e // vsub.f32 q8, q1, q7
- .long 0xf200ecf4 // vfma.f32 q7, q8, q10
- .long 0xecde4b04 // vldmia lr, {d20-d21}
- .long 0xe28ded06 // add lr, sp, #384
- .long 0xf26e0d4a // vsub.f32 q8, q7, q5
- .long 0xf200acf4 // vfma.f32 q5, q8, q10
- .long 0xecde0b04 // vldmia lr, {d16-d17}
- .long 0xe28de0d0 // add lr, sp, #208
- .long 0xecdeab04 // vldmia lr, {d26-d27}
- .long 0xe28de0e0 // add lr, sp, #224
- .long 0xf2600de2 // vsub.f32 q8, q8, q9
- .long 0xecde8b04 // vldmia lr, {d24-d25}
- .long 0xe28f2034 // add r2, pc, #52
- .long 0xf26c4d6a // vsub.f32 q10, q6, q13
- .long 0xf4226acf // vld1.64 {d6-d7}, [r2]
- .long 0xf2642d40 // vsub.f32 q9, q2, q0
- .long 0xf26a6d68 // vsub.f32 q11, q5, q12
- .long 0xf244acf0 // vfma.f32 q13, q10, q8
- .long 0xf2020cf0 // vfma.f32 q0, q9, q8
- .long 0xf2468cf0 // vfma.f32 q12, q11, q8
- .long 0xf22a21fa // vorr q1, q13, q13
- .long 0xf22841f8 // vorr q2, q12, q12
- .long 0xe28ddf6a // add sp, sp, #424
- .long 0xecbd8b10 // vpop {d8-d15}
- .long 0xe8bd41f0 // pop {r4, r5, r6, r7, r8, lr}
- .long 0xe12fff1c // bx ip
- .long 0xe320f000 // nop {0}
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
- .long 0x3f800000 // .word 0x3f800000
-
-HIDDEN _sk_gauss_a_to_rgba_vfp4
-.globl _sk_gauss_a_to_rgba_vfp4
-FUNCTION(_sk_gauss_a_to_rgba_vfp4)
-_sk_gauss_a_to_rgba_vfp4:
- .long 0xe28f2048 // add r2, pc, #72
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28f2050 // add r2, pc, #80
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f2058 // add r2, pc, #88
- .long 0xf2462c70 // vfma.f32 q9, q3, q8
- .long 0xf4620acf // vld1.64 {d16-d17}, [r2]
- .long 0xe28f205c // add r2, pc, #92
- .long 0xf2460c72 // vfma.f32 q8, q3, q9
- .long 0xf4622acf // vld1.64 {d18-d19}, [r2]
- .long 0xe28f2060 // add r2, pc, #96
- .long 0xf4220acf // vld1.64 {d0-d1}, [r2]
- .long 0xe4912004 // ldr r2, [r1], #4
- .long 0xf2462c70 // vfma.f32 q9, q3, q8
- .long 0xf2060c72 // vfma.f32 q0, q3, q9
- .long 0xf2202150 // vorr q1, q0, q0
- .long 0xf2204150 // vorr q2, q0, q0
- .long 0xf2206150 // vorr q3, q0, q0
- .long 0xe12fff12 // bx r2
- .long 0xe320f000 // nop {0}
- .long 0xc011102d // .word 0xc011102d
- .long 0xc011102d // .word 0xc011102d
- .long 0xc011102d // .word 0xc011102d
- .long 0xc011102d // .word 0xc011102d
- .long 0x40397812 // .word 0x40397812
- .long 0x40397812 // .word 0x40397812
- .long 0x40397812 // .word 0x40397812
- .long 0x40397812 // .word 0x40397812
- .long 0x3e5a9420 // .word 0x3e5a9420
- .long 0x3e5a9420 // .word 0x3e5a9420
- .long 0x3e5a9420 // .word 0x3e5a9420
- .long 0x3e5a9420 // .word 0x3e5a9420
- .long 0x3e1e9d04 // .word 0x3e1e9d04
- .long 0x3e1e9d04 // .word 0x3e1e9d04
- .long 0x3e1e9d04 // .word 0x3e1e9d04
- .long 0x3e1e9d04 // .word 0x3e1e9d04
- .long 0x39a11800 // .word 0x39a11800
- .long 0x39a11800 // .word 0x39a11800
- .long 0x39a11800 // .word 0x39a11800
- .long 0x39a11800 // .word 0x39a11800
-#elif defined(__x86_64__)
+#if defined(__x86_64__)
BALIGN32
HIDDEN _sk_start_pipeline_skx
diff --git a/src/jumper/SkJumper_misc.h b/src/jumper/SkJumper_misc.h
index 5db2709f05..59dfd65ab0 100644
--- a/src/jumper/SkJumper_misc.h
+++ b/src/jumper/SkJumper_misc.h
@@ -8,7 +8,7 @@
#ifndef SkJumper_misc_DEFINED
#define SkJumper_misc_DEFINED
-#include "SkJumper.h" // for memcpy()
+#include <string.h> // for memcpy()
// Miscellany used by SkJumper_stages.cpp and SkJumper_vectors.h.
diff --git a/src/jumper/SkJumper_stages.cpp b/src/jumper/SkJumper_stages.cpp
index a22a7bbdb9..f20eb83377 100644
--- a/src/jumper/SkJumper_stages.cpp
+++ b/src/jumper/SkJumper_stages.cpp
@@ -50,17 +50,17 @@ static const size_t N = sizeof(F) / sizeof(float);
size_t dx, dy, tail;
F dr,dg,db,da;
};
- using Stage = void(Params*, void** program, F r, F g, F b, F a);
+ using Stage = void(ABI*)(Params*, void** program, F r, F g, F b, F a);
#else
// We keep program the second argument, so that it's passed in rsi for load_and_inc().
- using Stage = void(size_t tail, void** program, size_t dx, size_t dy, F,F,F,F, F,F,F,F);
+ using Stage = void(ABI*)(size_t tail, void** program, size_t dx, size_t dy, F,F,F,F, F,F,F,F);
#endif
-MAYBE_MSABI
-extern "C" void WRAP(start_pipeline)(size_t dx, size_t dy, size_t xlimit, size_t ylimit,
- void** program) {
- auto start = (Stage*)load_and_inc(program);
+
+extern "C" MAYBE_MSABI void WRAP(start_pipeline)(size_t dx, size_t dy, size_t xlimit, size_t ylimit,
+ void** program) {
+ auto start = (Stage)load_and_inc(program);
const size_t x0 = dx;
for (; dy < ylimit; dy++) {
#if defined(__i386__) || defined(_M_IX86) || defined(__arm__)
@@ -90,26 +90,26 @@ extern "C" void WRAP(start_pipeline)(size_t dx, size_t dy, size_t xlimit, size_t
#define STAGE(name, ...) \
SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, \
F& r, F& g, F& b, F& a, F& dr, F& dg, F& db, F& da); \
- extern "C" void WRAP(name)(Params* params, void** program, \
- F r, F g, F b, F a) { \
+ extern "C" ABI void WRAP(name)(Params* params, void** program, \
+ F r, F g, F b, F a) { \
name##_k(Ctx{program},params->dx,params->dy,params->tail, r,g,b,a, \
params->dr, params->dg, params->db, params->da); \
- auto next = (Stage*)load_and_inc(program); \
+ auto next = (Stage)load_and_inc(program); \
next(params,program, r,g,b,a); \
} \
SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, \
F& r, F& g, F& b, F& a, F& dr, F& dg, F& db, F& da)
#else
- #define STAGE(name, ...) \
- SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, \
- F& r, F& g, F& b, F& a, F& dr, F& dg, F& db, F& da); \
- extern "C" void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
- F r, F g, F b, F a, F dr, F dg, F db, F da) { \
- name##_k(Ctx{program},dx,dy,tail, r,g,b,a, dr,dg,db,da); \
- auto next = (Stage*)load_and_inc(program); \
- next(tail,program,dx,dy, r,g,b,a, dr,dg,db,da); \
- } \
- SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, \
+ #define STAGE(name, ...) \
+ SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, \
+ F& r, F& g, F& b, F& a, F& dr, F& dg, F& db, F& da); \
+ extern "C" ABI void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
+ F r, F g, F b, F a, F dr, F dg, F db, F da) { \
+ name##_k(Ctx{program},dx,dy,tail, r,g,b,a, dr,dg,db,da); \
+ auto next = (Stage)load_and_inc(program); \
+ next(tail,program,dx,dy, r,g,b,a, dr,dg,db,da); \
+ } \
+ SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, \
F& r, F& g, F& b, F& a, F& dr, F& dg, F& db, F& da)
#endif
@@ -117,9 +117,9 @@ extern "C" void WRAP(start_pipeline)(size_t dx, size_t dy, size_t xlimit, size_t
// just_return() is a simple no-op stage that only exists to end the chain,
// returning back up to start_pipeline(), and from there to the caller.
#if defined(__i386__) || defined(_M_IX86) || defined(__arm__)
- extern "C" void WRAP(just_return)(Params*, void**, F,F,F,F) {}
+ extern "C" ABI void WRAP(just_return)(Params*, void**, F,F,F,F) {}
#else
- extern "C" void WRAP(just_return)(size_t, void**, size_t,size_t, F,F,F,F, F,F,F,F) {}
+ extern "C" ABI void WRAP(just_return)(size_t, void**, size_t,size_t, F,F,F,F, F,F,F,F) {}
#endif
diff --git a/src/jumper/SkJumper_stages_lowp.cpp b/src/jumper/SkJumper_stages_lowp.cpp
index 1a30487d59..07f8ec5a0b 100644
--- a/src/jumper/SkJumper_stages_lowp.cpp
+++ b/src/jumper/SkJumper_stages_lowp.cpp
@@ -16,17 +16,10 @@
#if defined(__ARM_NEON)
#include <arm_neon.h>
- #if defined(__arm__)
- #define ABI __attribute__((pcs("aapcs-vfp")))
- #else
- #define ABI
- #endif
#elif defined(__SSE2__)
#include <immintrin.h>
- #define ABI
#else
#include <math.h>
- #define ABI
#endif
#if !defined(JUMPER_IS_OFFLINE)
@@ -62,12 +55,11 @@ using Stage = void (ABI*)(size_t tail, void** program, size_t dx, size_t dy,
U16 r, U16 g, U16 b, U16 a,
U16 dr, U16 dg, U16 db, U16 da);
-MAYBE_MSABI
-ABI extern "C" void WRAP(start_pipeline)(const size_t x0,
- const size_t y0,
- const size_t xlimit,
- const size_t ylimit,
- void** program) {
+extern "C" MAYBE_MSABI void WRAP(start_pipeline)(const size_t x0,
+ const size_t y0,
+ const size_t xlimit,
+ const size_t ylimit,
+ void** program) {
auto start = (Stage)load_and_inc(program);
for (size_t dy = y0; dy < ylimit; dy++) {
size_t dx = x0;
@@ -80,7 +72,7 @@ ABI extern "C" void WRAP(start_pipeline)(const size_t x0,
}
}
-ABI extern "C" void WRAP(just_return)(size_t,void**,size_t,size_t,
+extern "C" ABI void WRAP(just_return)(size_t,void**,size_t,size_t,
U16,U16,U16,U16, U16,U16,U16,U16) {}
// All stages use the same function call ABI to chain into each other, but there are three types:
@@ -95,7 +87,7 @@ ABI extern "C" void WRAP(just_return)(size_t,void**,size_t,size_t,
#define STAGE_GG(name, ...) \
SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, F& x, F& y); \
- ABI extern "C" void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
+ extern "C" ABI void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
U16 r, U16 g, U16 b, U16 a, \
U16 dr, U16 dg, U16 db, U16 da) { \
auto x = join<F>(r,g), \
@@ -112,7 +104,7 @@ ABI extern "C" void WRAP(just_return)(size_t,void**,size_t,size_t,
SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, F x, F y, \
U16& r, U16& g, U16& b, U16& a, \
U16& dr, U16& dg, U16& db, U16& da); \
- ABI extern "C" void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
+ extern "C" ABI void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
U16 r, U16 g, U16 b, U16 a, \
U16 dr, U16 dg, U16 db, U16 da) { \
auto x = join<F>(r,g), \
@@ -129,7 +121,7 @@ ABI extern "C" void WRAP(just_return)(size_t,void**,size_t,size_t,
SI void name##_k(__VA_ARGS__, size_t dx, size_t dy, size_t tail, \
U16& r, U16& g, U16& b, U16& a, \
U16& dr, U16& dg, U16& db, U16& da); \
- ABI extern "C" void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
+ extern "C" ABI void WRAP(name)(size_t tail, void** program, size_t dx, size_t dy, \
U16 r, U16 g, U16 b, U16 a, \
U16 dr, U16 dg, U16 db, U16 da) { \
name##_k(Ctx{program}, dx,dy,tail, r,g,b,a, dr,dg,db,da); \
diff --git a/src/jumper/SkJumper_vectors.h b/src/jumper/SkJumper_vectors.h
index 2b76b035e1..8b6a2a4ebd 100644
--- a/src/jumper/SkJumper_vectors.h
+++ b/src/jumper/SkJumper_vectors.h
@@ -10,6 +10,7 @@
#include "SkJumper.h"
#include "SkJumper_misc.h"
+#include <stdint.h>
// This file contains vector types that SkJumper_stages.cpp uses to define stages.
@@ -17,7 +18,7 @@
#if !defined(__clang__)
#define JUMPER_IS_SCALAR
-#elif defined(__aarch64__) || defined(__ARM_VFPV4__)
+#elif defined(__ARM_NEON)
#define JUMPER_IS_NEON
#elif defined(__AVX512F__)
#define JUMPER_IS_AVX512
@@ -105,7 +106,6 @@
using U8 = V<uint8_t >;
// We polyfill a few routines that Clang doesn't build into ext_vector_types.
- SI F mad(F f, F m, F a) { return vfmaq_f32(a,f,m); }
SI F min(F a, F b) { return vminq_f32(a,b); }
SI F max(F a, F b) { return vmaxq_f32(a,b); }
SI F abs_ (F v) { return vabsq_f32(v); }
@@ -117,10 +117,12 @@
SI F if_then_else(I32 c, F t, F e) { return vbslq_f32((U32)c,t,e); }
#if defined(__aarch64__)
+ SI F mad(F f, F m, F a) { return vfmaq_f32(a,f,m); }
SI F floor_(F v) { return vrndmq_f32(v); }
SI F sqrt_(F v) { return vsqrtq_f32(v); }
SI U32 round(F v, F scale) { return vcvtnq_u32_f32(v*scale); }
#else
+ SI F mad(F f, F m, F a) { return vmlaq_f32(a,f,m); }
SI F floor_(F v) {
F roundtrip = vcvtq_f32_s32(vcvtq_s32_f32(v));
return roundtrip - if_then_else(roundtrip > v, 1, 0);
@@ -643,7 +645,7 @@ SI F approx_powf(F x, F y) {
}
SI F from_half(U16 h) {
-#if defined(JUMPER_IS_NEON)
+#if defined(__aarch64__)
return vcvt_f32_f16(h);
#elif defined(JUMPER_IS_AVX2) || defined(JUMPER_IS_AVX512)
@@ -663,7 +665,7 @@ SI F from_half(U16 h) {
}
SI U16 to_half(F f) {
-#if defined(JUMPER_IS_NEON)
+#if defined(__aarch64__)
return vcvt_f16_f32(f);
#elif defined(JUMPER_IS_AVX2) || defined(JUMPER_IS_AVX512)
diff --git a/src/jumper/build_stages.py b/src/jumper/build_stages.py
index a5b6280b80..d4d598264a 100755
--- a/src/jumper/build_stages.py
+++ b/src/jumper/build_stages.py
@@ -120,14 +120,6 @@ subprocess.check_call(['ld', '-r', '-o', 'win_x86_merged.o',
'win_x86_sse2.o',
'win_x86_lowp_sse2.o'])
-vfp4 = [
- '--target=armv7a-linux-gnueabihf',
- '-mfpu=neon-vfpv4',
-]
-subprocess.check_call(clang + cflags + vfp4 +
- ['-c', stages] +
- ['-o', 'vfp4.o'])
-
def parse_object_file(dot_o, directive, target=None):
globl, hidden, label, comment, align = \
'.globl', 'HIDDEN', ':', '// ', 'BALIGN'
@@ -235,11 +227,7 @@ print ' #define BALIGN32 .balign 32'
print '#endif'
print '.text'
-print '#if defined(__arm__)'
-print 'BALIGN4'
-parse_object_file('vfp4.o', '.long', target='elf32-littlearm')
-
-print '#elif defined(__x86_64__)'
+print '#if defined(__x86_64__)'
print 'BALIGN32'
parse_object_file('merged.o', '.byte')