A computing device for processing a data buffer, the computing device comprising: one or more microprocessors configured with an Advanced Vector Extensions-, AVX, based instruction set providing AVX-based operations; a data buffer processing module to access a data buffer having a buffer length; determine a level of parallelism configured for the data buffer indicative of a plurality of data segments of the data buffer to be processed in parallel according to the AVX-based operations; define the plurality of data segments for the data buffer based on the level of parallelism configured for the data buffer, wherein each data segment has a segment length greater than zero and less than the buffer length and comprises one or more words; pad one or more of the data segments to a specified length in accordance with a serial data processing algorithm; read each of the data segments into one or more data registers configured for data-level parallel processing, each data register of the one or more data registers having a plurality of data paths, wherein to read each of the data segments into the one or more data registers comprises to serially read, into any of the one or more data registers, one word from each data segment into a different data path of the same data register, such that each data word in the data buffer is assigned to a different data segment and each data segment comprises an array of data words; perform the serial data processing algorithm on each of the data segments substantially in parallel to generate a hash digest for each of the data segments; and perform an addition, add, function on the generated hash digests to form a combined hash digest representative of an output of the serial data processing algorithm; wherein the data buffer processing module is configured for execution on a single thread of a single core of a microprocessor of the one or more microprocessors. one or more microprocessors configured with an Advanced Vector Extensions-, AVX, based instruction set providing AVX-based operations; a data buffer processing module to access a data buffer having a buffer length; determine a level of parallelism configured for the data buffer indicative of a plurality of data segments of the data buffer to be processed in parallel according to the AVX-based operations; define the plurality of data segments for the data buffer based on the level of parallelism configured for the data buffer, wherein each data segment has a segment length greater than zero and less than the buffer length and comprises one or more words; pad one or more of the data segments to a specified length in accordance with a serial data processing algorithm; read each of the data segments into one or more data registers configured for data-level parallel processing, each data register of the one or more data registers having a plurality of data paths, wherein to read each of the data segments into the one or more data registers comprises to serially read, into any of the one or more data registers, one word from each data segment into a different data path of the same data register, such that each data word in the data buffer is assigned to a different data segment and each data segment comprises an array of data words; perform the serial data processing algorithm on each of the data segments substantially in parallel to generate a hash digest for each of the data segments; and perform an addition, add, function on the generated hash digests to form a combined hash digest representative of an output of the serial data processing algorithm; access a data buffer having a buffer length; determine a level of parallelism configured for the data buffer indicative of a plurality of data segments of the data buffer to be processed in parallel according to the AVX-based operations; define the plurality of data segments for the data buffer based on the level of parallelism configured for the data buffer, wherein each data segment has a segment length greater than zero and less than the buffer length and comprises one or more words; pad one or more of the data segments to a specified length in accordance with a serial data processing algorithm; read each of the data segments into one or more data registers configured for data-level parallel processing, each data register of the one or more data registers having a plurality of data paths, wherein to read each of the data segments into the one or more data registers comprises to serially read, into any of the one or more data registers, one word from each data segment into a different data path of the same data register, such that each data word in the data buffer is assigned to a different data segment and each data segment comprises an array of data words; perform the serial data processing algorithm on each of the data segments substantially in parallel to generate a hash digest for each of the data segments; and perform an addition, add, function on the generated hash digests to form a combined hash digest representative of an output of the serial data processing algorithm; wherein the data buffer processing module is configured for execution on a single thread of a single core of a microprocessor of the one or more microprocessors.