From 71ce8a9fff7aae7d30fff7db7e060359c109b73a Mon Sep 17 00:00:00 2001 From: Daniel Svensson Date: Tue, 23 May 2023 20:51:54 +0200 Subject: [PATCH] Always use simple while loop when simd is not supported (#85267) --- ...m.Private.DataContractSerialization.csproj | 1 + .../src/System/Xml/XmlStreamNodeWriter.cs | 3 +- .../System.Runtime.Serialization.Xml.sln | 31 +++++++++++++------ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/libraries/System.Private.DataContractSerialization/src/System.Private.DataContractSerialization.csproj b/src/libraries/System.Private.DataContractSerialization/src/System.Private.DataContractSerialization.csproj index c0ca93e494c5c..8ee00c3c19581 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System.Private.DataContractSerialization.csproj +++ b/src/libraries/System.Private.DataContractSerialization/src/System.Private.DataContractSerialization.csproj @@ -162,6 +162,7 @@ + diff --git a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlStreamNodeWriter.cs b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlStreamNodeWriter.cs index ea629d725ec48..f596f4cf71c22 100644 --- a/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlStreamNodeWriter.cs +++ b/src/libraries/System.Private.DataContractSerialization/src/System/Xml/XmlStreamNodeWriter.cs @@ -5,6 +5,7 @@ using System.IO; using System.Text; using System.Runtime.InteropServices; +using System.Runtime.Intrinsics; using System.Runtime.Serialization; using System.Threading.Tasks; using System.Diagnostics; @@ -361,7 +362,7 @@ protected unsafe int UnsafeGetUTF8Chars(char* chars, int charCount, byte[] buffe fixed (byte* _bytes = &buffer[offset]) { // Fast path for small strings, use Encoding.GetBytes for larger strings since it is faster when vectorization is possible - if ((uint)charCount < 32) + if (!Vector128.IsHardwareAccelerated || (uint)charCount < 32) { byte* bytes = _bytes; char* charsMax = &chars[charCount]; diff --git a/src/libraries/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.sln b/src/libraries/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.sln index 1175b6a261e17..c65dc4d1cb9e8 100644 --- a/src/libraries/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.sln +++ b/src/libraries/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.sln @@ -1,4 +1,8 @@ -Microsoft Visual Studio Solution File, Format Version 12.00 + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33530.505 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TestUtilities", "..\Common\tests\TestUtilities\TestUtilities.csproj", "{CBA80130-6773-4DF9-995C-DC6CBED89CB5}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Win32.Primitives", "..\Microsoft.Win32.Primitives\ref\Microsoft.Win32.Primitives.csproj", "{E5DB95E1-94AA-405C-9FFE-09B1E2498EE2}" @@ -47,6 +51,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{DB29DBEF-FA4 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "gen", "gen", "{DE71D38E-4154-477C-9C27-3FA4ADB4098F}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "System.Runtime.Intrinsics", "..\System.Runtime.Intrinsics\ref\System.Runtime.Intrinsics.csproj", "{755CD0A1-7280-48C1-BE5B-ABE897F6657D}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -133,31 +139,36 @@ Global {DF2255F4-F671-4C15-9100-D8079992E19D}.Debug|Any CPU.Build.0 = Debug|Any CPU {DF2255F4-F671-4C15-9100-D8079992E19D}.Release|Any CPU.ActiveCfg = Release|Any CPU {DF2255F4-F671-4C15-9100-D8079992E19D}.Release|Any CPU.Build.0 = Release|Any CPU + {755CD0A1-7280-48C1-BE5B-ABE897F6657D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {755CD0A1-7280-48C1-BE5B-ABE897F6657D}.Debug|Any CPU.Build.0 = Debug|Any CPU + {755CD0A1-7280-48C1-BE5B-ABE897F6657D}.Release|Any CPU.ActiveCfg = Release|Any CPU + {755CD0A1-7280-48C1-BE5B-ABE897F6657D}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {CBA80130-6773-4DF9-995C-DC6CBED89CB5} = {41101B02-36C9-476B-98D5-1A6E105BBF4A} - {8B069551-9B95-464E-BB40-C56817506FEC} = {41101B02-36C9-476B-98D5-1A6E105BBF4A} - {8FF5E841-29F6-4DB7-A4F8-9281FBDA0B9C} = {41101B02-36C9-476B-98D5-1A6E105BBF4A} - {45263D7D-249E-4810-8F7D-1DEF25515210} = {41101B02-36C9-476B-98D5-1A6E105BBF4A} {E5DB95E1-94AA-405C-9FFE-09B1E2498EE2} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} {7DF41C40-FE5D-41DF-B106-3DD77BE4D4B5} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} + {1392041A-E2CA-4553-BEAF-363974651B81} = {DB29DBEF-FA4E-4334-AFB8-BFB2DA82D1DE} {E3347E75-EAE8-4E6B-98D1-7230B1EE5450} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} {5EE18CED-28AE-4415-B5A3-C31123BF57E1} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} {E813073E-07A7-4C88-A505-484CB33C9DC4} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} + {76AC3DDD-2B38-489F-A8B0-8E43054595DB} = {DB29DBEF-FA4E-4334-AFB8-BFB2DA82D1DE} + {7D7457FD-B88C-4375-926D-7D46C71E34A7} = {DE71D38E-4154-477C-9C27-3FA4ADB4098F} + {D5FF2DBA-F304-4ACB-8F82-B8F9321E22A9} = {DE71D38E-4154-477C-9C27-3FA4ADB4098F} {DAD8EBB8-A1D6-4E8F-A334-D7F0273280D1} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} {0C045A64-AE30-47CC-A931-5B5C6C9EF06D} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} {19F785D2-F7A4-41AB-9301-A6AD7E40B238} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} - {9759BE1C-98A0-4319-AC82-D432002BD66B} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} - {DF2255F4-F671-4C15-9100-D8079992E19D} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} - {1392041A-E2CA-4553-BEAF-363974651B81} = {DB29DBEF-FA4E-4334-AFB8-BFB2DA82D1DE} - {76AC3DDD-2B38-489F-A8B0-8E43054595DB} = {DB29DBEF-FA4E-4334-AFB8-BFB2DA82D1DE} {6FD10BE0-24C8-456E-8B9A-FD101C05C961} = {DB29DBEF-FA4E-4334-AFB8-BFB2DA82D1DE} - {7D7457FD-B88C-4375-926D-7D46C71E34A7} = {DE71D38E-4154-477C-9C27-3FA4ADB4098F} - {D5FF2DBA-F304-4ACB-8F82-B8F9321E22A9} = {DE71D38E-4154-477C-9C27-3FA4ADB4098F} + {8B069551-9B95-464E-BB40-C56817506FEC} = {41101B02-36C9-476B-98D5-1A6E105BBF4A} + {8FF5E841-29F6-4DB7-A4F8-9281FBDA0B9C} = {41101B02-36C9-476B-98D5-1A6E105BBF4A} + {45263D7D-249E-4810-8F7D-1DEF25515210} = {41101B02-36C9-476B-98D5-1A6E105BBF4A} + {9759BE1C-98A0-4319-AC82-D432002BD66B} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} {6E942A4A-405E-4AAD-89A7-006358A8A004} = {DE71D38E-4154-477C-9C27-3FA4ADB4098F} + {DF2255F4-F671-4C15-9100-D8079992E19D} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} + {755CD0A1-7280-48C1-BE5B-ABE897F6657D} = {18E62E91-73A2-48AE-BEFF-CE7C64DF759D} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EE9FB522-4B73-4E3E-B63D-C21826BB7B5D}