// This functions adds SSE2 Support for the functions 'get_blk_sse_sum_c' void aom_get_blk_sse_sum_sse2(const int16_t *data, int stride, int bw, int bh, int *x_sum, int64_t *x2_sum) {
*x_sum = 0;
*x2_sum = 0;
if ((bh & 3) == 0) { switch (bw) { case4: sse_sum_wd4_sse2(data, stride, bh, x_sum, x2_sum); break; case8: case16:
sse_sum_wd8_sse2(data, stride, bh, x_sum, x2_sum, bw >> 3); break; // For widths 32 and 64, the registers may overflow. So compute // partial widths at a time. case32: if (bh <= 32) {
sse_sum_wd8_sse2(data, stride, bh, x_sum, x2_sum, bw >> 3); break;
} else {
sse_sum_wd8_sse2(data, stride, 32, x_sum, x2_sum, bw >> 3);
sse_sum_wd8_sse2(data + 32 * stride, stride, 32, x_sum, x2_sum,
bw >> 3); break;
}
case64: if (bh <= 16) {
sse_sum_wd8_sse2(data, stride, bh, x_sum, x2_sum, bw >> 3); break;
} else { for (int i = 0; i < bh; i += 16)
sse_sum_wd8_sse2(data + i * stride, stride, 16, x_sum, x2_sum,
bw >> 3); break;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.