diff options
author | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
---|---|---|
committer | David Walter Seikel | 2012-01-04 18:41:13 +1000 |
commit | dd7595a3475407a7fa96a97393bae8c5220e8762 (patch) | |
tree | e341e911d7eb911a51684a7412ef7f7c7605d28e /libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c | |
parent | Add the skeleton. (diff) | |
download | SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.zip SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.gz SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.bz2 SledjHamr-dd7595a3475407a7fa96a97393bae8c5220e8762.tar.xz |
Add the base Enlightenment Foundation Libraries - eina, eet, evas, ecore, embryo, and edje.
Note that embryo wont be used, but I'm not sure yet if you can build edje without it.
Diffstat (limited to '')
-rw-r--r-- | libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c | 138 |
1 files changed, 138 insertions, 0 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c new file mode 100644 index 0000000..a05af7d --- /dev/null +++ b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c | |||
@@ -0,0 +1,138 @@ | |||
1 | /* blend color --> dst */ | ||
2 | |||
3 | #ifdef BUILD_MMX | ||
4 | static void | ||
5 | _op_blend_c_dp_mmx(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { | ||
6 | DATA32 *e = d + l; | ||
7 | pxor_r2r(mm0, mm0); | ||
8 | MOV_P2R(c, mm2, mm0) | ||
9 | c = 256 - (c >> 24); | ||
10 | MOV_A2R(c, mm3) | ||
11 | while (d < e) { | ||
12 | MOV_P2R(*d, mm1, mm0) | ||
13 | MUL4_256_R2R(mm3, mm1) | ||
14 | paddw_r2r(mm2, mm1); | ||
15 | MOV_R2P(mm1, *d, mm0) | ||
16 | d++; | ||
17 | } | ||
18 | } | ||
19 | |||
20 | #define _op_blend_caa_dp_mmx _op_blend_c_dp_mmx | ||
21 | |||
22 | #define _op_blend_c_dpan_mmx _op_blend_c_dp_mmx | ||
23 | #define _op_blend_caa_dpan_mmx _op_blend_c_dpan_mmx | ||
24 | |||
25 | static void | ||
26 | init_blend_color_span_funcs_mmx(void) | ||
27 | { | ||
28 | op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_c_dp_mmx; | ||
29 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_caa_dp_mmx; | ||
30 | |||
31 | op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_c_dpan_mmx; | ||
32 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_caa_dpan_mmx; | ||
33 | } | ||
34 | #endif | ||
35 | |||
36 | #ifdef BUILD_MMX | ||
37 | static void | ||
38 | _op_blend_pt_c_dp_mmx(DATA32 s __UNUSED__, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { | ||
39 | pxor_r2r(mm0, mm0); | ||
40 | MOV_P2R(c, mm2, mm0) | ||
41 | c = 256 - (c >> 24); | ||
42 | MOV_A2R(c, mm3) | ||
43 | MOV_P2R(*d, mm1, mm0) | ||
44 | MUL4_256_R2R(mm3, mm1) | ||
45 | paddw_r2r(mm2, mm1); | ||
46 | MOV_R2P(mm1, *d, mm0) | ||
47 | } | ||
48 | |||
49 | #define _op_blend_pt_caa_dp_mmx _op_blend_pt_c_dp_mmx | ||
50 | |||
51 | #define _op_blend_pt_c_dpan_mmx _op_blend_pt_c_dp_mmx | ||
52 | #define _op_blend_pt_caa_dpan_mmx _op_blend_pt_c_dpan_mmx | ||
53 | |||
54 | static void | ||
55 | init_blend_color_pt_funcs_mmx(void) | ||
56 | { | ||
57 | op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_c_dp_mmx; | ||
58 | op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_caa_dp_mmx; | ||
59 | |||
60 | op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_c_dpan_mmx; | ||
61 | op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_caa_dpan_mmx; | ||
62 | } | ||
63 | #endif | ||
64 | /*-----*/ | ||
65 | |||
66 | /* blend_rel color -> dst */ | ||
67 | |||
68 | #ifdef BUILD_MMX | ||
69 | static void | ||
70 | _op_blend_rel_c_dp_mmx(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { | ||
71 | DATA32 *e = d + l; | ||
72 | pxor_r2r(mm0, mm0); | ||
73 | MOV_P2R(c, mm2, mm0) | ||
74 | c = 256 - (c >> 24); | ||
75 | MOV_A2R(c, mm3) | ||
76 | MOV_A2R(ALPHA_255, mm5) | ||
77 | while (d < e) { | ||
78 | MOV_P2R(*d, mm1, mm0) | ||
79 | MOV_RA2R(mm1, mm4) | ||
80 | MUL4_256_R2R(mm3, mm1) | ||
81 | MUL4_SYM_R2R(mm2, mm4, mm5) | ||
82 | paddw_r2r(mm4, mm1); | ||
83 | MOV_R2P(mm1, *d, mm0) | ||
84 | d++; | ||
85 | } | ||
86 | } | ||
87 | |||
88 | #define _op_blend_rel_caa_dp_mmx _op_blend_rel_c_dp_mmx | ||
89 | |||
90 | #define _op_blend_rel_c_dpan_mmx _op_blend_c_dpan_mmx | ||
91 | #define _op_blend_rel_caa_dpan_mmx _op_blend_caa_dpan_mmx | ||
92 | |||
93 | static void | ||
94 | init_blend_rel_color_span_funcs_mmx(void) | ||
95 | { | ||
96 | op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_c_dp_mmx; | ||
97 | op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_caa_dp_mmx; | ||
98 | |||
99 | op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_c_dpan_mmx; | ||
100 | op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_caa_dpan_mmx; | ||
101 | } | ||
102 | #endif | ||
103 | |||
104 | #ifdef BUILD_MMX | ||
105 | static void | ||
106 | _op_blend_rel_pt_c_dp_mmx(DATA32 s __UNUSED__, DATA8 m __UNUSED__, DATA32 c, DATA32 *d) { | ||
107 | pxor_r2r(mm0, mm0); | ||
108 | MOV_A2R(ALPHA_256, mm6) | ||
109 | MOV_A2R(ALPHA_255, mm5) | ||
110 | |||
111 | MOV_P2R(c, mm2, mm0) | ||
112 | MOV_RA2R(mm2, mm1) | ||
113 | psubw_r2r(mm1, mm6); | ||
114 | |||
115 | MOV_P2R(*d, mm1, mm0) | ||
116 | MOV_RA2R(mm1, mm4) | ||
117 | MUL4_256_R2R(mm6, mm1) | ||
118 | |||
119 | MUL4_SYM_R2R(mm4, mm2, mm5) | ||
120 | paddw_r2r(mm2, mm1); | ||
121 | MOV_R2P(mm1, *d, mm0) | ||
122 | } | ||
123 | |||
124 | #define _op_blend_rel_pt_caa_dp_mmx _op_blend_rel_pt_c_dp_mmx | ||
125 | |||
126 | #define _op_blend_rel_pt_c_dpan_mmx _op_blend_pt_c_dpan_mmx | ||
127 | #define _op_blend_rel_pt_caa_dpan_mmx _op_blend_pt_caa_dpan_mmx | ||
128 | |||
129 | static void | ||
130 | init_blend_rel_color_pt_funcs_mmx(void) | ||
131 | { | ||
132 | op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_pt_c_dp_mmx; | ||
133 | op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_pt_caa_dp_mmx; | ||
134 | |||
135 | op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_c_dpan_mmx; | ||
136 | op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_caa_dpan_mmx; | ||
137 | } | ||
138 | #endif | ||