From 376fd31ad485c3df35d934c56364ff0c34eacdfa Mon Sep 17 00:00:00 2001 From: Mike Klein Date: Mon, 11 Dec 2017 16:53:26 -0500 Subject: 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 Reviewed-by: Florin Malita --- src/jumper/SkJumper.cpp | 19 - src/jumper/SkJumper.h | 39 +- src/jumper/SkJumper_generated.S | 9454 +---------------------------------- src/jumper/SkJumper_misc.h | 2 +- src/jumper/SkJumper_stages.cpp | 42 +- src/jumper/SkJumper_stages_lowp.cpp | 26 +- src/jumper/SkJumper_vectors.h | 10 +- src/jumper/build_stages.py | 14 +- 8 files changed, 51 insertions(+), 9555 deletions(-) (limited to 'src/jumper') 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 +#include + // 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 , , and 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 (or it'll be included again by ). - #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 - #include + #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 - .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 - .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 - .long 0xe0550000 // subs r0, r5, r0 - .long 0x0a000007 // beq e4 - .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 - .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 - .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 - .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 - .long 0xf2c00050 // vmov.i32 q8, #0 - .long 0xe3560002 // cmp r6, #2 - .long 0x0a000005 // beq 1b30 - .long 0xe3560003 // cmp r6, #3 - .long 0x1affffc5 // bne 1a38 - .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 - .long 0xe2033003 // and r3, r3, #3 - .long 0xe3530001 // cmp r3, #1 - .long 0x0a00000b // beq 1b7c - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000003 // beq 1b64 - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffe3 // bne 1aec - .long 0xe2823008 // add r3, r2, #8 - .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32] - .long 0xedc20b00 // vstr d16, [r2] - .long 0xeaffffdf // b 1aec - .long 0xe3a06000 // mov r6, #0 - .long 0xeea06b90 // vdup.32 q8, r6 - .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32] - .long 0xeaffffae // b 1a38 - .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32] - .long 0xeaffffd9 // b 1aec - .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 - .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 - .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 - .long 0xf2c00050 // vmov.i32 q8, #0 - .long 0xe3560002 // cmp r6, #2 - .long 0x0a000005 // beq 1cd8 - .long 0xe3560003 // cmp r6, #3 - .long 0x1affffc5 // bne 1be0 - .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 - .long 0xe2033003 // and r3, r3, #3 - .long 0xe3530001 // cmp r3, #1 - .long 0x0a00000b // beq 1d24 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000003 // beq 1d0c - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffe3 // bne 1c94 - .long 0xe2823008 // add r3, r2, #8 - .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32] - .long 0xedc20b00 // vstr d16, [r2] - .long 0xeaffffdf // b 1c94 - .long 0xe3a06000 // mov r6, #0 - .long 0xeea06b90 // vdup.32 q8, r6 - .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32] - .long 0xeaffffae // b 1be0 - .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32] - .long 0xeaffffd9 // b 1c94 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000005 // beq 266c - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffe8 // bne 2600 - .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 - .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 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3520002 // cmp r2, #2 - .long 0x0a000005 // beq 27b0 - .long 0xe3520003 // cmp r2, #3 - .long 0x1affffd3 // bne 26f0 - .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 - .long 0xe3a02000 // mov r2, #0 - .long 0xee802bb0 // vdup.16 d16, r2 - .long 0xf4e3041f // vld1.16 {d16[0]}, [r3 :16] - .long 0xeaffffc2 // b 26f0 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3550002 // cmp r5, #2 - .long 0x0a000005 // beq 2960 - .long 0xe3550003 // cmp r5, #3 - .long 0x1affffdc // bne 28c4 - .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 - .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 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3550002 // cmp r5, #2 - .long 0x0a000005 // beq 2adc - .long 0xe3550003 // cmp r5, #3 - .long 0x1affffc8 // bne 29f0 - .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 - .long 0xe3a05000 // mov r5, #0 - .long 0xee805bb0 // vdup.16 d16, r5 - .long 0xf4e4041f // vld1.16 {d16[0]}, [r4 :16] - .long 0xeaffffb7 // b 29f0 - .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 - .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 - .long 0xf2c00050 // vmov.i32 q8, #0 - .long 0xe35c0002 // cmp ip, #2 - .long 0x0a000005 // beq 2c6c - .long 0xe35c0003 // cmp ip, #3 - .long 0x1affffc1 // bne 2b64 - .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 - .long 0xe3a02000 // mov r2, #0 - .long 0xeea02b90 // vdup.32 q8, r2 - .long 0xf4ee083f // vld1.32 {d16[0]}, [lr :32] - .long 0xeaffffb5 // b 2b64 - .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 - .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 - .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 - .long 0xe28c2010 // add r2, ip, #16 - .long 0xf4e2078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2] - .long 0xeaffffbc // b 2cc4 - .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 - .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 - .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 - .long 0xe28c200c // add r2, ip, #12 - .long 0xf4e2068f // vld3.16 {d16[2],d17[2],d18[2]}, [r2] - .long 0xeaffffc2 // b 2e08 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000005 // beq 3eb8 - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffe9 // bne 3e50 - .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 - .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 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3520002 // cmp r2, #2 - .long 0x0a000005 // beq 3fcc - .long 0xe3520003 // cmp r2, #3 - .long 0x1affffea // bne 3f68 - .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 - .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 - .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 - .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 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000003 // beq 4154 - .long 0xe3530003 // cmp r3, #3 - .long 0x1afffff4 // bne 4120 - .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 - .long 0xee903bb0 // vmov.u16 r3, d16[0] - .long 0xe5c23000 // strb r3, [r2] - .long 0xeaffffea // b 4120 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000005 // beq 4234 - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffe8 // bne 41c8 - .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 - .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 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3550002 // cmp r5, #2 - .long 0x0a000005 // beq 4350 - .long 0xe3550003 // cmp r5, #3 - .long 0x1affffe6 // bne 42dc - .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 - .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 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000005 // beq 4540 - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffdc // bne 44a4 - .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 - .long 0xe3a03000 // mov r3, #0 - .long 0xee803bb0 // vdup.16 d16, r3 - .long 0xf4e2041f // vld1.16 {d16[0]}, [r2 :16] - .long 0xeaffffcb // b 44a4 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3550002 // cmp r5, #2 - .long 0x0a000005 // beq 46a4 - .long 0xe3550003 // cmp r5, #3 - .long 0x1affffd8 // bne 45f8 - .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 - .long 0xe3a05000 // mov r5, #0 - .long 0xee805bb0 // vdup.16 d16, r5 - .long 0xf4e4041f // vld1.16 {d16[0]}, [r4 :16] - .long 0xeaffffc7 // b 45f8 - .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 - .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 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000003 // beq 48d8 - .long 0xe3530003 // cmp r3, #3 - .long 0x1afffff4 // bne 48a4 - .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 - .long 0xf4c2041f // vst1.16 {d16[0]}, [r2 :16] - .long 0xeaffffe9 // b 48a4 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000005 // beq 49ec - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffd9 // bne 4944 - .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 - .long 0xe3a03000 // mov r3, #0 - .long 0xee803bb0 // vdup.16 d16, r3 - .long 0xf4e2041f // vld1.16 {d16[0]}, [r2 :16] - .long 0xeaffffc8 // b 4944 - .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 - .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 - .long 0xf2c00010 // vmov.i32 d16, #0 - .long 0xe3550002 // cmp r5, #2 - .long 0x0a000005 // beq 4b5c - .long 0xe3550003 // cmp r5, #3 - .long 0x1affffd4 // bne 4aa0 - .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 - .long 0xe3a05000 // mov r5, #0 - .long 0xee805bb0 // vdup.16 d16, r5 - .long 0xf4e4041f // vld1.16 {d16[0]}, [r4 :16] - .long 0xeaffffc3 // b 4aa0 - .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 - .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 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000003 // beq 4dbc - .long 0xe3530003 // cmp r3, #3 - .long 0x1afffff4 // bne 4d88 - .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 - .long 0xf4c2041f // vst1.16 {d16[0]}, [r2 :16] - .long 0xeaffffe9 // b 4d88 - -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 - .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 - .long 0xf2c00050 // vmov.i32 q8, #0 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000005 // beq 4e94 - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffe2 // bne 4e10 - .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 - .long 0xe3a03000 // mov r3, #0 - .long 0xeea03b90 // vdup.32 q8, r3 - .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32] - .long 0xeaffffd6 // b 4e10 - .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 - .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 - .long 0xf2c00050 // vmov.i32 q8, #0 - .long 0xe3550002 // cmp r5, #2 - .long 0x0a000005 // beq 4f9c - .long 0xe3550003 // cmp r5, #3 - .long 0x1affffdd // bne 4f04 - .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 - .long 0xe3a05000 // mov r5, #0 - .long 0xeea05b90 // vdup.32 q8, r5 - .long 0xf4e4083f // vld1.32 {d16[0]}, [r4 :32] - .long 0xeaffffd1 // b 4f04 - .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 - .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 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000003 // beq 5164 - .long 0xe3530003 // cmp r3, #3 - .long 0x1afffff4 // bne 5130 - .long 0xe2823008 // add r3, r2, #8 - .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32] - .long 0xedc20b00 // vstr d16, [r2] - .long 0xeafffff0 // b 5130 - .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32] - .long 0xeaffffee // b 5130 - .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 - .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 - .long 0xf2c00050 // vmov.i32 q8, #0 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000005 // beq 523c - .long 0xe3530003 // cmp r3, #3 - .long 0x1affffe2 // bne 51b8 - .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 - .long 0xe3a03000 // mov r3, #0 - .long 0xeea03b90 // vdup.32 q8, r3 - .long 0xf4e2083f // vld1.32 {d16[0]}, [r2 :32] - .long 0xeaffffd6 // b 51b8 - .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 - .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 - .long 0xf2c00050 // vmov.i32 q8, #0 - .long 0xe3550002 // cmp r5, #2 - .long 0x0a000005 // beq 5344 - .long 0xe3550003 // cmp r5, #3 - .long 0x1affffdd // bne 52ac - .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 - .long 0xe3a05000 // mov r5, #0 - .long 0xeea05b90 // vdup.32 q8, r5 - .long 0xf4e4083f // vld1.32 {d16[0]}, [r4 :32] - .long 0xeaffffd1 // b 52ac - .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 - .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 - .long 0xe3530002 // cmp r3, #2 - .long 0x0a000003 // beq 550c - .long 0xe3530003 // cmp r3, #3 - .long 0x1afffff4 // bne 54d8 - .long 0xe2823008 // add r3, r2, #8 - .long 0xf4c3183f // vst1.32 {d17[0]}, [r3 :32] - .long 0xedc20b00 // vstr d16, [r2] - .long 0xeafffff0 // b 54d8 - .long 0xf4c2083f // vst1.32 {d16[0]}, [r2 :32] - .long 0xeaffffee // b 54d8 - .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 - .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 - .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 - .long 0xe2832010 // add r2, r3, #16 - .long 0xf4e2078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2] - .long 0xeaffffed // b 5560 - -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 - .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 - .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 - .long 0xe2854010 // add r4, r5, #16 - .long 0xf4e4078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r4] - .long 0xeaffffe8 // b 55e4 - -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 - .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 - .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 - .long 0xe2822010 // add r2, r2, #16 - .long 0xf4c2078f // vst4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2] - .long 0xeafffff1 // b 5740 - -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 - .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 - .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 - .long 0xe2832010 // add r2, r3, #16 - .long 0xf4e2078f // vld4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2] - .long 0xeaffffd7 // b 57a8 - .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 - .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 - .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 - .long 0xe283200c // add r2, r3, #12 - .long 0xf4e2068f // vld3.16 {d16[2],d17[2],d18[2]}, [r2] - .long 0xeaffffdb // b 588c - .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 - .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 - .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 - .long 0xe2832010 // add r2, r3, #16 - .long 0xf4c2078f // vst4.16 {d16[2],d17[2],d18[2],d19[2]}, [r2] - .long 0xeafffff1 // b 59e8 - .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 - .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 - .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 - .long 0xe2822020 // add r2, r2, #32 - .long 0xf4a21b4f // vld4.32 {d1[0],d3[0],d5[0],d7[0]}, [r2] - .long 0xeafffff1 // b 5a74 - -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 - .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 - .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 - .long 0xe2844020 // add r4, r4, #32 - .long 0xf4e41b4f // vld4.32 {d17[0],d19[0],d21[0],d23[0]}, [r4] - .long 0xeaffffec // b 5afc - -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 - .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 - .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 - .long 0xe2822020 // add r2, r2, #32 - .long 0xf4821b4f // vst4.32 {d1[0],d3[0],d5[0],d7[0]}, [r2] - .long 0xeafffff1 // b 5b7c - .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 - .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 - .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 - .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 - .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 // 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 - #if defined(__arm__) - #define ABI __attribute__((pcs("aapcs-vfp"))) - #else - #define ABI - #endif #elif defined(__SSE2__) #include - #define ABI #else #include - #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(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(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 // 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; // 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') -- cgit v1.2.3