1cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org#ifndef SkXfermode_opts_arm_neon_DEFINED
2cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org#define SkXfermode_opts_arm_neon_DEFINED
3cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org
4cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org#include "SkXfermode_proccoeff.h"
5cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org
6cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.orgclass SkNEONProcCoeffXfermode : public SkProcCoeffXfermode {
7cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.orgpublic:
8cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org    SkNEONProcCoeffXfermode(const ProcCoeff& rec, SkXfermode::Mode mode,
9cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org                            void* procSIMD)
10cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org            : INHERITED(rec, mode), fProcSIMD(procSIMD) {}
11cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org
12cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org    virtual void xfer32(SkPMColor dst[], const SkPMColor src[], int count,
13cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org                        const SkAlpha aa[]) const SK_OVERRIDE;
14bc25dfc798fff225ce65355ecda19d2b85bd0e74commit-bot@chromium.org    virtual void xfer16(uint16_t* SK_RESTRICT dst, const SkPMColor* SK_RESTRICT src,
15bc25dfc798fff225ce65355ecda19d2b85bd0e74commit-bot@chromium.org                        int count, const SkAlpha* SK_RESTRICT aa) const SK_OVERRIDE;
16cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org
170f10f7bf1fb43ca6346dc220a076773b1f19a367commit-bot@chromium.org    SK_TO_STRING_OVERRIDE()
18cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkNEONProcCoeffXfermode)
19cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org
20cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.orgprivate:
218b0e8ac5f582de80356019406e2975079bf0829dcommit-bot@chromium.org    SkNEONProcCoeffXfermode(SkReadBuffer& buffer);
22cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org
23cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org    // void* is used to avoid pulling arm_neon.h in the core and having to build
24cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org    // it with -mfpu=neon.
25cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org    void* fProcSIMD;
26cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org    typedef SkProcCoeffXfermode INHERITED;
27cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org};
28cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org
29d611864e679a58865b111e74fe7ac919cba42163commit-bot@chromium.orgextern SkPMColor srcatop_modeproc_neon(SkPMColor src, SkPMColor dst);
30d611864e679a58865b111e74fe7ac919cba42163commit-bot@chromium.orgextern SkPMColor dstatop_modeproc_neon(SkPMColor src, SkPMColor dst);
31d611864e679a58865b111e74fe7ac919cba42163commit-bot@chromium.orgextern SkPMColor xor_modeproc_neon(SkPMColor src, SkPMColor dst);
32d611864e679a58865b111e74fe7ac919cba42163commit-bot@chromium.orgextern SkPMColor plus_modeproc_neon(SkPMColor src, SkPMColor dst);
33d611864e679a58865b111e74fe7ac919cba42163commit-bot@chromium.orgextern SkPMColor modulate_modeproc_neon(SkPMColor src, SkPMColor dst);
34d611864e679a58865b111e74fe7ac919cba42163commit-bot@chromium.org
35cd7992ba55e8b87580f54e7c19fc033bed01640dcommit-bot@chromium.org#endif //#ifdef SkXfermode_opts_arm_neon_DEFINED
36