Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnkit Jain <radical@gmail.com>2022-09-08 20:16:04 +0300
committerGitHub <noreply@github.com>2022-09-08 20:16:04 +0300
commitf8b6128b57c5c41974fb70677f99c6ab6e74e1fe (patch)
treec2c3778458c77b741de98b056a4af2db312b2a3a
parentf85d3708b12eff11820c97194ff9bc1a7a5d2796 (diff)
[release/7.0][wasm] Add CI job for AOT+SIMD to `runtime-wasm` for PRs (#75064)
* [wasm] Add support for running `System.Runtime.Intrinsics` tests with .. SIMD enabled, as part of smoke tests. * [wasm] Add a new `runtime-wasm-features` pipeline .. which has only a SIMD_AOT job for now. * [wasm] Add SIMD_AOT job to runtime-wasm for now, as we can't add new pipelines * Fix browser-simd run * [wasm] Mark simd job as unstable for now Issues: https://github.com/dotnet/runtime/issues/75044 and https://github.com/dotnet/runtime/issues/75098
-rw-r--r--eng/pipelines/runtime-wasm-features.yml27
-rw-r--r--eng/pipelines/runtime-wasm.yml19
-rw-r--r--eng/testing/tests.wasm.targets2
-rw-r--r--src/libraries/System.Runtime.Intrinsics/tests/System.Runtime.Intrinsics.Tests.csproj4
-rw-r--r--src/libraries/System.Runtime.Intrinsics/tests/wasm.helix.targets49
-rw-r--r--src/libraries/sendtohelix-wasm.targets4
-rw-r--r--src/libraries/tests.proj8
7 files changed, 111 insertions, 2 deletions
diff --git a/eng/pipelines/runtime-wasm-features.yml b/eng/pipelines/runtime-wasm-features.yml
new file mode 100644
index 00000000000..940b59c800a
--- /dev/null
+++ b/eng/pipelines/runtime-wasm-features.yml
@@ -0,0 +1,27 @@
+# This pipeline is meant to be run manually. It contains
+# jobs that exercise extra/optional features for wasm, eg. SIMD
+
+trigger: none
+
+variables:
+ - template: /eng/pipelines/common/variables.yml
+
+jobs:
+
+# Evaluate paths
+- template: /eng/pipelines/common/evaluate-default-paths.yml
+
+# Run AOT tests with SIMD enabled
+- template: /eng/pipelines/common/templates/wasm-library-tests.yml
+ parameters:
+ platforms:
+ - Browser_wasm
+ nameSuffix: _SIMD_AOT
+ isExtraPlatformsBuild: false
+ isWasmOnlyBuild: true
+ extraBuildArgs: /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=true
+ extraHelixArgs: /p:NeedsToBuildWasmAppsOnHelix=true /p:WasmEnableSIMD=true
+ runSmokeOnlyArg: ''
+ alwaysRun: true
+ scenarios:
+ - WasmTestOnNodeJS
diff --git a/eng/pipelines/runtime-wasm.yml b/eng/pipelines/runtime-wasm.yml
index 62de930be9d..04eac67a939 100644
--- a/eng/pipelines/runtime-wasm.yml
+++ b/eng/pipelines/runtime-wasm.yml
@@ -19,3 +19,22 @@ jobs:
parameters:
isWasmOnlyBuild: ${{ variables.isWasmOnlyBuild }}
isRollingBuild: ${{ variables.isRollingBuild }}
+
+# Run AOT tests with SIMD enabled
+- template: /eng/pipelines/common/templates/wasm-library-tests.yml
+ parameters:
+ platforms:
+ - Browser_wasm
+ nameSuffix: _SIMD_AOT
+ isExtraPlatformsBuild: false
+ isWasmOnlyBuild: true
+ extraBuildArgs: /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=true
+ extraHelixArgs: /p:NeedsToBuildWasmAppsOnHelix=true /p:WasmEnableSIMD=true
+ runSmokeOnlyArg: ''
+ alwaysRun: true
+ # failures due to
+ # https://github.com/dotnet/runtime/issues/75044
+ # and https://github.com/dotnet/runtime/issues/75098
+ shouldContinueOnError: true
+ scenarios:
+ - WasmTestOnNodeJS
diff --git a/eng/testing/tests.wasm.targets b/eng/testing/tests.wasm.targets
index b4187faf8f6..b85acb34fb6 100644
--- a/eng/testing/tests.wasm.targets
+++ b/eng/testing/tests.wasm.targets
@@ -105,6 +105,8 @@
<_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration)</_AOTBuildCommand>
<_AOTBuildCommand>$(_AOTBuildCommand) /p:RunAOTCompilation=$(RunAOTCompilation)</_AOTBuildCommand>
+ <_AOTBuildCommand Condition="'$(BrowserHost)' == 'windows'">$(_AOTBuildCommand) %AOT_BUILD_ARGS%</_AOTBuildCommand>
+ <_AOTBuildCommand Condition="'$(BrowserHost)' != 'windows'">$(_AOTBuildCommand) %24AOT_BUILD_ARGS</_AOTBuildCommand>
<_AOTBuildCommand>$(_AOTBuildCommand) $(_ShellCommandSeparator) cd wasm_build/AppBundle</_AOTBuildCommand>
<RunScriptCommand Condition="'$(RunScriptCommand)' == ''">$(_AOTBuildCommand)</RunScriptCommand>
diff --git a/src/libraries/System.Runtime.Intrinsics/tests/System.Runtime.Intrinsics.Tests.csproj b/src/libraries/System.Runtime.Intrinsics/tests/System.Runtime.Intrinsics.Tests.csproj
index 3009539cc05..6c0187cf21f 100644
--- a/src/libraries/System.Runtime.Intrinsics/tests/System.Runtime.Intrinsics.Tests.csproj
+++ b/src/libraries/System.Runtime.Intrinsics/tests/System.Runtime.Intrinsics.Tests.csproj
@@ -7,6 +7,10 @@
<TargetFrameworks>$(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser</TargetFrameworks>
<!-- Disable nullability public only feature for NullabilityInfoContextTests -->
<Features>$(Features.Replace('nullablePublicOnly', '')</Features>
+
+ <HelixTargetsFile Condition="'$(TargetOS)' == 'Browser'">wasm.helix.targets</HelixTargetsFile>
+ <WasmXHarnessArgs Condition="'$(WasmEnableSIMD)' == 'true' and '$(Scenario)' == 'WasmTestOnNodeJs' and
+ '$(ContinuousIntegrationBuild)' != 'true'">$(WasmXHarnessArgs) --engine-arg=--experimental-wasm-simd</WasmXHarnessArgs>
</PropertyGroup>
<ItemGroup>
<Compile Include="Vectors\Vector128Tests.cs" />
diff --git a/src/libraries/System.Runtime.Intrinsics/tests/wasm.helix.targets b/src/libraries/System.Runtime.Intrinsics/tests/wasm.helix.targets
new file mode 100644
index 00000000000..65123620588
--- /dev/null
+++ b/src/libraries/System.Runtime.Intrinsics/tests/wasm.helix.targets
@@ -0,0 +1,49 @@
+<Project>
+ <PropertyGroup Condition="'$(IsRunningLibraryTests)' == 'true'">
+ <HelixExtensionTargets>$(HelixExtensionTargets);_AddHelixRuntimeIntrinsicsItems</HelixExtensionTargets>
+ <_RuntimeIntrinsicsProjectName>System.Runtime.Intrinsics.Tests</_RuntimeIntrinsicsProjectName>
+ </PropertyGroup>
+
+ <!-- Only add simd/non-simd jobs for nodejs -->
+ <Target Name="_AddHelixRuntimeIntrinsicsItems"
+ Condition="'$(NeedsToBuildWasmAppsOnHelix)' == 'true' and ('$(Scenario)' == 'WasmTestOnNodeJs' or '$(Scenario)' == 'WasmTestOnBrowser')">
+
+ <PropertyGroup Condition="'$(Scenario)' == 'WasmTestOnNodeJs'">
+ <_AOTBuildArgsSIMD Condition="'$(OS)' != 'Windows_NT'">&quot;WasmXHarnessArgs=$WasmXHarnessArgs --engine-arg=--experimental-wasm-simd&quot;</_AOTBuildArgsSIMD>
+ <_AOTBuildArgsSIMD Condition="'$(OS)' == 'Windows_NT'">&quot;WasmXHarnessArgs=%WasmXHarnessArgs% --engine-arg=--experimental-wasm-simd&quot;</_AOTBuildArgsSIMD>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <_AOTBuildArgsSIMD Condition="'$(OS)' != 'Windows_NT'">$(_AOTBuildArgsSIMD) &quot;AOT_BUILD_ARGS=-p:WasmEnableSIMD=true&quot;</_AOTBuildArgsSIMD>
+
+ <_AOTBuildArgsSIMD Condition="'$(OS)' != 'Windows_NT'">export $(_AOTBuildArgsSIMD)</_AOTBuildArgsSIMD>
+ <_AOTBuildArgsSIMD Condition="'$(OS)' == 'Windows_NT'">set $(_AOTBuildArgsSIMD)</_AOTBuildArgsSIMD>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <!-- remove the existing item -->
+ <HelixWorkItem Remove="@(HelixWorkItem)" Condition="'%(HelixWorkItem.Identity)' == '$(Scenario)-$(_RuntimeIntrinsicsProjectName)'" />
+
+ <HelixWorkItem Include="$(WorkItemPrefix)non-simd-$(_RuntimeIntrinsicsProjectName)">
+ <PayloadArchive>$(TestArchiveTestsDir)$(_RuntimeIntrinsicsProjectName).zip</PayloadArchive>
+ <Command>$(HelixCommand)</Command>
+ <Timeout>$(_workItemTimeout)</Timeout>
+ </HelixWorkItem>
+
+ <HelixWorkItem Include="$(WorkItemPrefix)simd-$(_RuntimeIntrinsicsProjectName)">
+ <PayloadArchive>$(TestArchiveTestsDir)$(_RuntimeIntrinsicsProjectName).zip</PayloadArchive>
+ <Command>$(HelixCommand)</Command>
+ <Timeout>$(_workItemTimeout)</Timeout>
+
+ <PreCommands>$(_AOTBuildArgsSIMD)</PreCommands>
+ </HelixWorkItem>
+
+ <_RuntimeIntrinsicsHelixItem
+ Include="@(HelixWorkItem)"
+ Condition="$([System.String]::new('%(HelixWorkItem.Identity)').EndsWith('-$(_RuntimeIntrinsicsProjectName)'))" />
+ </ItemGroup>
+
+ <Error Text="Something went wrong. Expected to have only two work items for $(_RuntimeIntrinsicsProjectName). But got @(_RuntimeIntrinsicsHelixItem)"
+ Condition="@(_RuntimeIntrinsicsHelixItem->Count()) != 2" />
+ </Target>
+</Project>
diff --git a/src/libraries/sendtohelix-wasm.targets b/src/libraries/sendtohelix-wasm.targets
index 82b14495dd5..ed76264134f 100644
--- a/src/libraries/sendtohelix-wasm.targets
+++ b/src/libraries/sendtohelix-wasm.targets
@@ -305,7 +305,9 @@
<_EmSdkFiles Include="$(EMSDK_PATH)\**\*" Exclude="$(EMSDK_PATH)\.git\**\*" />
</ItemGroup>
- <Copy SourceFiles="@(_EmSdkFiles)" DestinationFolder="$(EmSdkDirForHelixPayload)\%(RecursiveDir)" />
+ <Copy SourceFiles="@(_EmSdkFiles)"
+ DestinationFiles="@(_EmSdkFiles -> '$(EmSdkDirForHelixPayload)\%(RecursiveDir)%(FileName)%(Extension)')"
+ SkipUnchangedFiles="true" />
</Target>
<Target Name="DownloadFirefoxToSendToHelix" Condition="!Exists($(FirefoxForHelixPayload)) and '$(DebuggerHost)' == 'firefox'">
diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj
index 8e6d4712fee..07349a0d3d4 100644
--- a/src/libraries/tests.proj
+++ b/src/libraries/tests.proj
@@ -19,6 +19,7 @@
<TestPackages Condition="'$(TestPackages)' == ''">false</TestPackages>
<TestTrimming Condition="'$(TestTrimming)' == ''">false</TestTrimming>
+ <RunWasmSIMDSmokeTests Condition="'$(TargetOS)' == 'browser' and '$(BuildAOTTestsOnHelix)' == 'true' and '$(ContinuousIntegrationBuild)' == 'true'">true</RunWasmSIMDSmokeTests>
<RunHighAOTResourceRequiringTestsOnly Condition="'$(RunHighAOTResourceRequiringTestsOnly)' == ''">false</RunHighAOTResourceRequiringTestsOnly>
<!-- Don't build samples, and functional tests on EAT, AOT, WBT, and Debugger lanes -->
@@ -545,7 +546,12 @@
</ItemGroup>
<ItemGroup>
- <SmokeTestProject Include="$(MSBuildThisFileDirectory)System.Runtime\tests\System.Runtime.Tests.csproj" />
+ <SmokeTestProject Include="$(MSBuildThisFileDirectory)System.Runtime\tests\System.Runtime.Tests.csproj" />
+
+ <!-- Test SIMD too -->
+ <SmokeTestProject
+ Condition="'$(RunWasmSIMDSmokeTests)' == 'true'"
+ Include="$(MSBuildThisFileDirectory)System.Runtime.Intrinsics\tests\System.Runtime.Intrinsics.Tests.csproj" />
</ItemGroup>
<ItemGroup Condition="'$(TestNativeAot)' == 'true'">