From 9eb01d1c576320aae04ad46c3b3831774dd2fe91 Mon Sep 17 00:00:00 2001 From: Ben Adams Date: Wed, 5 Oct 2016 16:23:58 +0100 Subject: [PATCH] Reduce Vector register pressure by not overlapping --- .../Internal/Infrastructure/MemoryPoolIterator.cs | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.AspNetCore.Server.Kestrel/Internal/Infrastructure/MemoryPoolIterator.cs b/src/Microsoft.AspNetCore.Server.Kestrel/Internal/Infrastructure/MemoryPoolIterator.cs index 0ab1bf01ad..34f8b44608 100644 --- a/src/Microsoft.AspNetCore.Server.Kestrel/Internal/Infrastructure/MemoryPoolIterator.cs +++ b/src/Microsoft.AspNetCore.Server.Kestrel/Internal/Infrastructure/MemoryPoolIterator.cs @@ -509,13 +509,14 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure if (following >= _vectorSpan) { var data = new Vector(array, index); - var byte0Equals = Vector.Equals(data, byte0Vector); - var byte1Equals = Vector.Equals(data, byte1Vector); + var byte0Equals = Vector.Equals(data, byte0Vector); if (!byte0Equals.Equals(Vector.Zero)) { byte0Index = LocateFirstFoundByte(ref byte0Equals); } + + var byte1Equals = Vector.Equals(data, byte1Vector); if (!byte1Equals.Equals(Vector.Zero)) { byte1Index = LocateFirstFoundByte(ref byte1Equals); @@ -652,18 +653,20 @@ namespace Microsoft.AspNetCore.Server.Kestrel.Internal.Infrastructure if (following >= _vectorSpan) { var data = new Vector(array, index); - var byte0Equals = Vector.Equals(data, byte0Vector); - var byte1Equals = Vector.Equals(data, byte1Vector); - var byte2Equals = Vector.Equals(data, byte2Vector); + var byte0Equals = Vector.Equals(data, byte0Vector); if (!byte0Equals.Equals(Vector.Zero)) { byte0Index = LocateFirstFoundByte(ref byte0Equals); } + + var byte1Equals = Vector.Equals(data, byte1Vector); if (!byte1Equals.Equals(Vector.Zero)) { byte1Index = LocateFirstFoundByte(ref byte1Equals); } + + var byte2Equals = Vector.Equals(data, byte2Vector); if (!byte2Equals.Equals(Vector.Zero)) { byte2Index = LocateFirstFoundByte(ref byte2Equals);