OLD | NEW |
1 #include "SkXfermode.h" | 1 #include "SkXfermode.h" |
2 #include "SkXfermode_proccoeff.h" | 2 #include "SkXfermode_proccoeff.h" |
3 #include "SkColorPriv.h" | 3 #include "SkColorPriv.h" |
4 | 4 |
5 #include <arm_neon.h> | 5 #include <arm_neon.h> |
6 #include "SkColor_opts_neon.h" | 6 #include "SkColor_opts_neon.h" |
7 #include "SkXfermode_opts_arm_neon.h" | 7 #include "SkXfermode_opts_arm_neon.h" |
8 | 8 |
9 #define SkAlphaMulAlpha(a, b) SkMulDiv255Round(a, b) | 9 #define SkAlphaMulAlpha(a, b) SkMulDiv255Round(a, b) |
10 | 10 |
(...skipping 800 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 "blr %[proc] \t\n" | 811 "blr %[proc] \t\n" |
812 "st4 {v0.8b - v3.8b}, [%[dst]], #32 \t\n" | 812 "st4 {v0.8b - v3.8b}, [%[dst]], #32 \t\n" |
813 : [src] "+&r" (src), [dst] "+&r" (dst) | 813 : [src] "+&r" (src), [dst] "+&r" (dst) |
814 : [proc] "r" (procSIMD) | 814 : [proc] "r" (procSIMD) |
815 : "cc", "memory", | 815 : "cc", "memory", |
816 /* We don't know what proc is going to clobber so we must | 816 /* We don't know what proc is going to clobber so we must |
817 * add everything that is not callee-saved. | 817 * add everything that is not callee-saved. |
818 */ | 818 */ |
819 "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", | 819 "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9", |
820 "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", | 820 "x10", "x11", "x12", "x13", "x14", "x15", "x16", "x17", "x18", |
| 821 "x30", /* x30 implicitly clobbered by blr */ |
821 "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", "v17", | 822 "v0", "v1", "v2", "v3", "v4", "v5", "v6", "v7", "v16", "v17", |
822 "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", | 823 "v18", "v19", "v20", "v21", "v22", "v23", "v24", "v25", "v26", |
823 "v27", "v28", "v29", "v30", "v31" | 824 "v27", "v28", "v29", "v30", "v31" |
824 ); | 825 ); |
825 | 826 |
826 #endif // #ifdef SK_CPU_ARM32 | 827 #endif // #ifdef SK_CPU_ARM32 |
827 | 828 |
828 count -= 8; | 829 count -= 8; |
829 } | 830 } |
830 // Leftovers | 831 // Leftovers |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1014 | 1015 |
1015 if (procSIMD != NULL) { | 1016 if (procSIMD != NULL) { |
1016 return SkNEW_ARGS(SkNEONProcCoeffXfermode, (rec, mode, procSIMD)); | 1017 return SkNEW_ARGS(SkNEONProcCoeffXfermode, (rec, mode, procSIMD)); |
1017 } | 1018 } |
1018 return NULL; | 1019 return NULL; |
1019 } | 1020 } |
1020 | 1021 |
1021 SkXfermodeProc SkPlatformXfermodeProcFactory_impl_neon(SkXfermode::Mode mode) { | 1022 SkXfermodeProc SkPlatformXfermodeProcFactory_impl_neon(SkXfermode::Mode mode) { |
1022 return gNEONXfermodeProcs1[mode]; | 1023 return gNEONXfermodeProcs1[mode]; |
1023 } | 1024 } |
OLD | NEW |