Recuento rápido del número de bytes iguales entre dos matrices

Yo escribi la funcionint compare_16bytes(__m128i lhs, __m128i rhs) para comparar dos números de 16 bytes mediante instrucciones SSE: esta función devuelve cuántos bytes son iguales después de realizar la comparación.

Ahora me gustaría usar la función anterior para comparar matrices de dos bytes de longitud arbitraria: la longitud puede no ser un múltiplo de 16 bytes, así que necesito lidiar con este problema. ¿Cómo podría completar la implementación de la función a continuación? ¿Cómo podría mejorar la función de abajo?

int fast_compare(const char* s, const char* t, int length)
{
    int result = 0;

    const char* sPtr = s;
    const char* tPtr = t;

    while(...)
    {
        const __m128i* lhs = (const __m128i*)sPtr;
        const __m128i* rhs = (const __m128i*)tPtr;

        // compare the next 16 bytes of s and t
        result += compare_16bytes(*lhs,*rhs);

        sPtr += 16;
        tPtr += 16;
    }

    return result;
}

Respuestas a la pregunta(4)

Su respuesta a la pregunta