diff options
Diffstat (limited to '')
-rw-r--r-- | libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c b/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c deleted file mode 100644 index 1843265..0000000 --- a/libraries/evas/src/lib/engines/common/evas_op_blend/op_blend_color_sse3.c +++ /dev/null | |||
@@ -1,167 +0,0 @@ | |||
1 | /* blend color -> dst */ | ||
2 | |||
3 | #ifdef BUILD_SSE3 | ||
4 | |||
5 | static void | ||
6 | _op_blend_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { | ||
7 | |||
8 | DATA32 a = 256 - (c >> 24); | ||
9 | |||
10 | const __m128i c_packed = _mm_set_epi32(c, c, c, c); | ||
11 | const __m128i a_packed = _mm_set_epi32(a, a, a, a); | ||
12 | |||
13 | LOOP_ALIGNED_U1_A48_SSE3(d, l, | ||
14 | { /* UOP */ | ||
15 | |||
16 | *d = c + MUL_256(a, *d); | ||
17 | d++; l--; | ||
18 | }, | ||
19 | { /* A4OP */ | ||
20 | |||
21 | __m128i d0 = _mm_load_si128((__m128i *)d); | ||
22 | |||
23 | d0 = mul_256_sse3(a_packed, d0); | ||
24 | d0 = _mm_add_epi32(d0, c_packed); | ||
25 | |||
26 | _mm_store_si128((__m128i *)d, d0); | ||
27 | |||
28 | d += 4; l -= 4; | ||
29 | }, | ||
30 | { /* A8OP */ | ||
31 | |||
32 | __m128i d0 = _mm_load_si128((__m128i *)d); | ||
33 | __m128i d1 = _mm_load_si128((__m128i *)(d+4)); | ||
34 | |||
35 | d0 = mul_256_sse3(a_packed, d0); | ||
36 | d1 = mul_256_sse3(a_packed, d1); | ||
37 | |||
38 | d0 = _mm_add_epi32(d0, c_packed); | ||
39 | d1 = _mm_add_epi32(d1, c_packed); | ||
40 | |||
41 | _mm_store_si128((__m128i *)d, d0); | ||
42 | _mm_store_si128((__m128i *)(d+4), d1); | ||
43 | |||
44 | d += 8; l -= 8; | ||
45 | }) | ||
46 | } | ||
47 | |||
48 | #define _op_blend_caa_dp_sse3 _op_blend_c_dp_sse3 | ||
49 | |||
50 | #define _op_blend_c_dpan_sse3 _op_blend_c_dp_sse3 | ||
51 | #define _op_blend_caa_dpan_sse3 _op_blend_c_dpan_sse3 | ||
52 | |||
53 | static void | ||
54 | init_blend_color_span_funcs_sse3(void) | ||
55 | { | ||
56 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) | ||
57 | // op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_c_dp_sse3; | ||
58 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_caa_dp_sse3; | ||
59 | |||
60 | // FIXME: BUGGY BUGGY Core i5 750 (32bit), 4.5.2 (Ubuntu/Linaro 4.5.2-8ubuntu4), ello (text and rectangle) | ||
61 | // op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_c_dpan_sse3; | ||
62 | op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_caa_dpan_sse3; | ||
63 | } | ||
64 | |||
65 | #define _op_blend_pt_c_dp_sse3 NULL | ||
66 | #define _op_blend_pt_caa_dp_sse3 _op_blend_pt_c_dp_sse3 | ||
67 | |||
68 | #define _op_blend_pt_c_dpan_sse3 _op_blend_pt_c_dp_sse3 | ||
69 | #define _op_blend_pt_caa_dpan_sse3 _op_blend_pt_c_dpan_sse3 | ||
70 | |||
71 | #define _op_blend_pt_c_dpas_sse3 _op_blend_pt_c_dp_sse3 | ||
72 | #define _op_blend_pt_caa_dpas_sse3 _op_blend_pt_c_dp_sse3 | ||
73 | |||
74 | static void | ||
75 | init_blend_color_pt_funcs_sse3(void) | ||
76 | { | ||
77 | op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_pt_c_dp_sse3; | ||
78 | op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_pt_caa_dp_sse3; | ||
79 | |||
80 | op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_pt_c_dpan_sse3; | ||
81 | op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_pt_caa_dpan_sse3; | ||
82 | } | ||
83 | |||
84 | |||
85 | /*-----*/ | ||
86 | |||
87 | /* blend_rel color -> dst */ | ||
88 | |||
89 | static void | ||
90 | _op_blend_rel_c_dp_sse3(DATA32 *s __UNUSED__, DATA8 *m __UNUSED__, DATA32 c, DATA32 *d, int l) { | ||
91 | |||
92 | int alpha = 256 - (c >> 24); | ||
93 | |||
94 | const __m128i c_packed = _mm_set_epi32(c, c, c, c); | ||
95 | const __m128i alpha_packed = _mm_set_epi32(alpha, alpha, alpha, alpha); | ||
96 | |||
97 | LOOP_ALIGNED_U1_A48_SSE3(d, l, | ||
98 | { /* UOP */ | ||
99 | |||
100 | *d = MUL_SYM(*d >> 24, c) + MUL_256(alpha, *d); | ||
101 | d++; l--; | ||
102 | }, | ||
103 | { /* A4OP */ | ||
104 | |||
105 | __m128i d0 = _mm_load_si128((__m128i *)d); | ||
106 | |||
107 | __m128i mul0 = mul_256_sse3(alpha_packed, d0); | ||
108 | __m128i sym0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), c_packed); | ||
109 | |||
110 | d0 = _mm_add_epi32(mul0, sym0); | ||
111 | |||
112 | _mm_store_si128((__m128i *)d, d0); | ||
113 | |||
114 | d += 4; l -= 4; | ||
115 | }, | ||
116 | { /* A8OP */ | ||
117 | |||
118 | __m128i d0 = _mm_load_si128((__m128i *)d); | ||
119 | __m128i d1 = _mm_load_si128((__m128i *)(d+4)); | ||
120 | |||
121 | __m128i mul0 = mul_256_sse3(alpha_packed, d0); | ||
122 | __m128i mul1 = mul_256_sse3(alpha_packed, d1); | ||
123 | |||
124 | __m128i sym0 = mul_sym_sse3(_mm_srli_epi32(d0, 24), c_packed); | ||
125 | __m128i sym1 = mul_sym_sse3(_mm_srli_epi32(d1, 24), c_packed); | ||
126 | |||
127 | d0 = _mm_add_epi32(mul0, sym0); | ||
128 | d1 = _mm_add_epi32(mul1, sym1); | ||
129 | |||
130 | _mm_store_si128((__m128i *)d, d0); | ||
131 | _mm_store_si128((__m128i *)(d+4), d1); | ||
132 | |||
133 | d += 8; l -= 8; | ||
134 | }) | ||
135 | } | ||
136 | |||
137 | #define _op_blend_rel_caa_dp_sse3 _op_blend_rel_c_dp_sse3 | ||
138 | #define _op_blend_rel_c_dpan_sse3 _op_blend_c_dpan_sse3 | ||
139 | #define _op_blend_rel_caa_dpan_sse3 _op_blend_caa_dpan_sse3 | ||
140 | |||
141 | static void | ||
142 | init_blend_rel_color_span_funcs_sse3(void) | ||
143 | { | ||
144 | op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_c_dp_sse3; | ||
145 | op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_caa_dp_sse3; | ||
146 | |||
147 | op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_c_dpan_sse3; | ||
148 | op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_caa_dpan_sse3; | ||
149 | } | ||
150 | |||
151 | #define _op_blend_rel_pt_c_dp_sse3 NULL | ||
152 | #define _op_blend_rel_pt_caa_dp_sse3 _op_blend_rel_pt_c_dp_sse3 | ||
153 | |||
154 | #define _op_blend_rel_pt_c_dpan_sse3 _op_blend_pt_c_dpan_sse3 | ||
155 | #define _op_blend_rel_pt_caa_dpan_sse3 _op_blend_pt_caa_dpan_sse3 | ||
156 | |||
157 | static void | ||
158 | init_blend_rel_color_pt_funcs_sse3(void) | ||
159 | { | ||
160 | op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_SSE3] = _op_blend_rel_pt_c_dp_sse3; | ||
161 | op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_SSE3] = _op_blend_rel_pt_caa_dp_sse3; | ||
162 | |||
163 | op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_SSE3] = _op_blend_rel_pt_c_dpan_sse3; | ||
164 | op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_SSE3] = _op_blend_rel_pt_caa_dpan_sse3; | ||
165 | } | ||
166 | |||
167 | #endif | ||