diff options
author | Bruce Forstall <brucefo@microsoft.com> | 2018-02-21 21:58:41 -0800 |
---|---|---|
committer | Jan Kotas <jkotas@microsoft.com> | 2018-02-21 21:58:41 -0800 |
commit | eae9c75b53bb88dfe0914b247a8d379621de61af (patch) | |
tree | 9c4123b969ee3311e87a026b8533ae63bfb2d463 /tests | |
parent | 9264ec999eb42ecff8cd36068b051cf6e8f16501 (diff) | |
download | coreclr-eae9c75b53bb88dfe0914b247a8d379621de61af.tar.gz coreclr-eae9c75b53bb88dfe0914b247a8d379621de61af.tar.bz2 coreclr-eae9c75b53bb88dfe0914b247a8d379621de61af.zip |
Fix StructPacking test for ARM (#16484)
Use RuntimeInformation.ProcessArchitecture instead of
RuntimeInformation.OSArchitecture, as for Windows ARM we normally
run in the WoW layer.
Also, `double` on ARM is 8 byte aligned, but was going down the x86
code path that assumes 4-byte alignment.
Finally, add this test to the Windows ARM and Windows ARM64 test
runs by adding it to the respective tests.lst files.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/arm/Tests.lst | 8 | ||||
-rw-r--r-- | tests/arm64/Tests.lst | 7 | ||||
-rw-r--r-- | tests/src/Interop/StructPacking/StructPacking.cs | 58 |
3 files changed, 44 insertions, 29 deletions
diff --git a/tests/arm/Tests.lst b/tests/arm/Tests.lst index 407ab2cd7d..19e9c10275 100644 --- a/tests/arm/Tests.lst +++ b/tests/arm/Tests.lst @@ -90819,3 +90819,11 @@ Expected=0 MaxAllowedDurationSeconds=600 Categories=EXPECTED_PASS HostStyle=0 + +[StructPacking.cmd_11402] +RelativePath=Interop\StructPacking\StructPacking\StructPacking.cmd +WorkingDir=Interop\StructPacking\StructPacking +Expected=0 +MaxAllowedDurationSeconds=600 +Categories=EXPECTED_PASS +HostStyle=0 diff --git a/tests/arm64/Tests.lst b/tests/arm64/Tests.lst index 2c93e499da..865f1fe73a 100644 --- a/tests/arm64/Tests.lst +++ b/tests/arm64/Tests.lst @@ -90820,3 +90820,10 @@ MaxAllowedDurationSeconds=600 Categories=EXPECTED_PASS HostStyle=0 +[StructPacking.cmd_11720] +RelativePath=Interop\StructPacking\StructPacking\StructPacking.cmd +WorkingDir=Interop\StructPacking\StructPacking +Expected=0 +MaxAllowedDurationSeconds=600 +Categories=EXPECTED_PASS +HostStyle=0 diff --git a/tests/src/Interop/StructPacking/StructPacking.cs b/tests/src/Interop/StructPacking/StructPacking.cs index 6df179d98a..ad27ef64a9 100644 --- a/tests/src/Interop/StructPacking/StructPacking.cs +++ b/tests/src/Interop/StructPacking/StructPacking.cs @@ -287,7 +287,7 @@ unsafe class Program { bool succeeded = true; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || (RuntimeInformation.OSArchitecture != Architecture.X86)) + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || (RuntimeInformation.ProcessArchitecture != Architecture.X86)) { succeeded &= Test<DefaultLayoutDefaultPacking<double>>( expectedSize: 16, @@ -313,7 +313,7 @@ unsafe class Program expectedOffsetValue: 8 ); - if (Environment.Is64BitProcess) + if (RuntimeInformation.ProcessArchitecture != Architecture.X86) { succeeded &= Test<AutoLayoutDefaultPacking<double>>( expectedSize: 16, @@ -506,7 +506,7 @@ unsafe class Program { bool succeeded = true; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || (RuntimeInformation.OSArchitecture != Architecture.X86)) + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || (RuntimeInformation.ProcessArchitecture != Architecture.X86)) { succeeded &= Test<DefaultLayoutDefaultPacking<long>>( expectedSize: 16, @@ -532,7 +532,7 @@ unsafe class Program expectedOffsetValue: 8 ); - if (Environment.Is64BitProcess) + if (RuntimeInformation.ProcessArchitecture != Architecture.X86) { succeeded &= Test<AutoLayoutDefaultPacking<long>>( expectedSize: 16, @@ -919,47 +919,47 @@ unsafe class Program { bool succeeded = true; - if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || (RuntimeInformation.OSArchitecture != Architecture.X86)) + if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) || (RuntimeInformation.ProcessArchitecture != Architecture.X86)) { - succeeded &= Test<DefaultLayoutDefaultPacking<double>>( + succeeded &= Test<DefaultLayoutDefaultPacking<ulong>>( expectedSize: 16, expectedOffsetByte: 0, expectedOffsetValue: 8 ); - succeeded &= Test<SequentialLayoutDefaultPacking<double>>( + succeeded &= Test<SequentialLayoutDefaultPacking<ulong>>( expectedSize: 16, expectedOffsetByte: 0, expectedOffsetValue: 8 ); - succeeded &= Test<SequentialLayoutMinPacking<double>>( + succeeded &= Test<SequentialLayoutMinPacking<ulong>>( expectedSize: 9, expectedOffsetByte: 0, expectedOffsetValue: 1 ); - succeeded &= Test<SequentialLayoutMaxPacking<double>>( + succeeded &= Test<SequentialLayoutMaxPacking<ulong>>( expectedSize: 16, expectedOffsetByte: 0, expectedOffsetValue: 8 ); - if (Environment.Is64BitProcess) + if (RuntimeInformation.ProcessArchitecture != Architecture.X86) { - succeeded &= Test<AutoLayoutDefaultPacking<double>>( + succeeded &= Test<AutoLayoutDefaultPacking<ulong>>( expectedSize: 16, expectedOffsetByte: 8, expectedOffsetValue: 0 ); - succeeded &= Test<AutoLayoutMinPacking<double>>( + succeeded &= Test<AutoLayoutMinPacking<ulong>>( expectedSize: 16, expectedOffsetByte: 8, expectedOffsetValue: 0 ); - succeeded &= Test<AutoLayoutMaxPacking<double>>( + succeeded &= Test<AutoLayoutMaxPacking<ulong>>( expectedSize: 16, expectedOffsetByte: 8, expectedOffsetValue: 0 @@ -967,19 +967,19 @@ unsafe class Program } else { - succeeded &= Test<AutoLayoutDefaultPacking<double>>( + succeeded &= Test<AutoLayoutDefaultPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 8, expectedOffsetValue: 0 ); - succeeded &= Test<AutoLayoutMinPacking<double>>( + succeeded &= Test<AutoLayoutMinPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 8, expectedOffsetValue: 0 ); - succeeded &= Test<AutoLayoutMaxPacking<double>>( + succeeded &= Test<AutoLayoutMaxPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 8, expectedOffsetValue: 0 @@ -990,43 +990,43 @@ unsafe class Program { // The System V ABI for i386 defines this type as having 4-byte alignment - succeeded &= Test<DefaultLayoutDefaultPacking<double>>( + succeeded &= Test<DefaultLayoutDefaultPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 0, expectedOffsetValue: 4 ); - succeeded &= Test<SequentialLayoutDefaultPacking<double>>( + succeeded &= Test<SequentialLayoutDefaultPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 0, expectedOffsetValue: 4 ); - succeeded &= Test<SequentialLayoutMinPacking<double>>( + succeeded &= Test<SequentialLayoutMinPacking<ulong>>( expectedSize: 9, expectedOffsetByte: 0, expectedOffsetValue: 1 ); - succeeded &= Test<SequentialLayoutMaxPacking<double>>( + succeeded &= Test<SequentialLayoutMaxPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 0, expectedOffsetValue: 4 ); - succeeded &= Test<AutoLayoutDefaultPacking<double>>( + succeeded &= Test<AutoLayoutDefaultPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 0, expectedOffsetValue: 4 ); - succeeded &= Test<AutoLayoutMinPacking<double>>( + succeeded &= Test<AutoLayoutMinPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 0, expectedOffsetValue: 4 ); - succeeded &= Test<AutoLayoutMaxPacking<double>>( + succeeded &= Test<AutoLayoutMaxPacking<ulong>>( expectedSize: 12, expectedOffsetByte: 0, expectedOffsetValue: 4 @@ -1160,7 +1160,7 @@ unsafe class Program expectedOffsetValue: 8 ); - if (Environment.Is64BitProcess) + if (RuntimeInformation.ProcessArchitecture != Architecture.X86) { succeeded &= Test<AutoLayoutDefaultPacking<Vector64<byte>>>( expectedSize: 16, @@ -1208,7 +1208,7 @@ unsafe class Program { bool succeeded = true; - if (RuntimeInformation.OSArchitecture == Architecture.Arm) + if (RuntimeInformation.ProcessArchitecture == Architecture.Arm) { // The Procedure Call Standard for ARM defines this type as having 8-byte alignment @@ -1257,7 +1257,7 @@ unsafe class Program expectedOffsetValue: 1 ); - if (Environment.Is64BitProcess) + if (RuntimeInformation.ProcessArchitecture != Architecture.X86) { succeeded &= Test<AutoLayoutDefaultPacking<Vector128<byte>>>( expectedSize: 24, @@ -1305,7 +1305,7 @@ unsafe class Program { bool succeeded = true; - if (RuntimeInformation.OSArchitecture == Architecture.Arm) + if (RuntimeInformation.ProcessArchitecture == Architecture.Arm) { // The Procedure Call Standard for ARM defines this type as having 8-byte alignment @@ -1327,7 +1327,7 @@ unsafe class Program expectedOffsetValue: 8 ); } - else if (RuntimeInformation.OSArchitecture == Architecture.Arm64) + else if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64) { // The Procedure Call Standard for ARM64 defines this type as having 16-byte alignment @@ -1376,7 +1376,7 @@ unsafe class Program expectedOffsetValue: 1 ); - if (Environment.Is64BitProcess) + if (RuntimeInformation.ProcessArchitecture != Architecture.X86) { succeeded &= Test<AutoLayoutDefaultPacking<Vector256<byte>>>( expectedSize: 40, |