Skip to content

Commit f8b6128

Browse files
authored
[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: #75044 and #75098
1 parent f85d370 commit f8b6128

File tree

7 files changed

+111
-2
lines changed

7 files changed

+111
-2
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
# This pipeline is meant to be run manually. It contains
2+
# jobs that exercise extra/optional features for wasm, eg. SIMD
3+
4+
trigger: none
5+
6+
variables:
7+
- template: /eng/pipelines/common/variables.yml
8+
9+
jobs:
10+
11+
# Evaluate paths
12+
- template: /eng/pipelines/common/evaluate-default-paths.yml
13+
14+
# Run AOT tests with SIMD enabled
15+
- template: /eng/pipelines/common/templates/wasm-library-tests.yml
16+
parameters:
17+
platforms:
18+
- Browser_wasm
19+
nameSuffix: _SIMD_AOT
20+
isExtraPlatformsBuild: false
21+
isWasmOnlyBuild: true
22+
extraBuildArgs: /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=true
23+
extraHelixArgs: /p:NeedsToBuildWasmAppsOnHelix=true /p:WasmEnableSIMD=true
24+
runSmokeOnlyArg: ''
25+
alwaysRun: true
26+
scenarios:
27+
- WasmTestOnNodeJS

eng/pipelines/runtime-wasm.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,22 @@ jobs:
1919
parameters:
2020
isWasmOnlyBuild: ${{ variables.isWasmOnlyBuild }}
2121
isRollingBuild: ${{ variables.isRollingBuild }}
22+
23+
# Run AOT tests with SIMD enabled
24+
- template: /eng/pipelines/common/templates/wasm-library-tests.yml
25+
parameters:
26+
platforms:
27+
- Browser_wasm
28+
nameSuffix: _SIMD_AOT
29+
isExtraPlatformsBuild: false
30+
isWasmOnlyBuild: true
31+
extraBuildArgs: /p:EnableAggressiveTrimming=true /p:BuildAOTTestsOnHelix=true /p:RunAOTCompilation=true
32+
extraHelixArgs: /p:NeedsToBuildWasmAppsOnHelix=true /p:WasmEnableSIMD=true
33+
runSmokeOnlyArg: ''
34+
alwaysRun: true
35+
# failures due to
36+
# https://github.com/dotnet/runtime/issues/75044
37+
# and https://github.com/dotnet/runtime/issues/75098
38+
shouldContinueOnError: true
39+
scenarios:
40+
- WasmTestOnNodeJS

eng/testing/tests.wasm.targets

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,8 @@
105105
<_AOTBuildCommand Condition="'$(ContinuousIntegrationBuild)' != 'true'">$(_AOTBuildCommand) /p:RuntimeSrcDir=$(RepoRoot) /p:RuntimeConfig=$(Configuration)</_AOTBuildCommand>
106106

107107
<_AOTBuildCommand>$(_AOTBuildCommand) /p:RunAOTCompilation=$(RunAOTCompilation)</_AOTBuildCommand>
108+
<_AOTBuildCommand Condition="'$(BrowserHost)' == 'windows'">$(_AOTBuildCommand) %AOT_BUILD_ARGS%</_AOTBuildCommand>
109+
<_AOTBuildCommand Condition="'$(BrowserHost)' != 'windows'">$(_AOTBuildCommand) %24AOT_BUILD_ARGS</_AOTBuildCommand>
108110
<_AOTBuildCommand>$(_AOTBuildCommand) $(_ShellCommandSeparator) cd wasm_build/AppBundle</_AOTBuildCommand>
109111

110112
<RunScriptCommand Condition="'$(RunScriptCommand)' == ''">$(_AOTBuildCommand)</RunScriptCommand>

src/libraries/System.Runtime.Intrinsics/tests/System.Runtime.Intrinsics.Tests.csproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
<TargetFrameworks>$(NetCoreAppCurrent)-windows;$(NetCoreAppCurrent)-Unix;$(NetCoreAppCurrent)-Browser</TargetFrameworks>
88
<!-- Disable nullability public only feature for NullabilityInfoContextTests -->
99
<Features>$(Features.Replace('nullablePublicOnly', '')</Features>
10+
11+
<HelixTargetsFile Condition="'$(TargetOS)' == 'Browser'">wasm.helix.targets</HelixTargetsFile>
12+
<WasmXHarnessArgs Condition="'$(WasmEnableSIMD)' == 'true' and '$(Scenario)' == 'WasmTestOnNodeJs' and
13+
'$(ContinuousIntegrationBuild)' != 'true'">$(WasmXHarnessArgs) --engine-arg=--experimental-wasm-simd</WasmXHarnessArgs>
1014
</PropertyGroup>
1115
<ItemGroup>
1216
<Compile Include="Vectors\Vector128Tests.cs" />
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<Project>
2+
<PropertyGroup Condition="'$(IsRunningLibraryTests)' == 'true'">
3+
<HelixExtensionTargets>$(HelixExtensionTargets);_AddHelixRuntimeIntrinsicsItems</HelixExtensionTargets>
4+
<_RuntimeIntrinsicsProjectName>System.Runtime.Intrinsics.Tests</_RuntimeIntrinsicsProjectName>
5+
</PropertyGroup>
6+
7+
<!-- Only add simd/non-simd jobs for nodejs -->
8+
<Target Name="_AddHelixRuntimeIntrinsicsItems"
9+
Condition="'$(NeedsToBuildWasmAppsOnHelix)' == 'true' and ('$(Scenario)' == 'WasmTestOnNodeJs' or '$(Scenario)' == 'WasmTestOnBrowser')">
10+
11+
<PropertyGroup Condition="'$(Scenario)' == 'WasmTestOnNodeJs'">
12+
<_AOTBuildArgsSIMD Condition="'$(OS)' != 'Windows_NT'">&quot;WasmXHarnessArgs=$WasmXHarnessArgs --engine-arg=--experimental-wasm-simd&quot;</_AOTBuildArgsSIMD>
13+
<_AOTBuildArgsSIMD Condition="'$(OS)' == 'Windows_NT'">&quot;WasmXHarnessArgs=%WasmXHarnessArgs% --engine-arg=--experimental-wasm-simd&quot;</_AOTBuildArgsSIMD>
14+
</PropertyGroup>
15+
16+
<PropertyGroup>
17+
<_AOTBuildArgsSIMD Condition="'$(OS)' != 'Windows_NT'">$(_AOTBuildArgsSIMD) &quot;AOT_BUILD_ARGS=-p:WasmEnableSIMD=true&quot;</_AOTBuildArgsSIMD>
18+
19+
<_AOTBuildArgsSIMD Condition="'$(OS)' != 'Windows_NT'">export $(_AOTBuildArgsSIMD)</_AOTBuildArgsSIMD>
20+
<_AOTBuildArgsSIMD Condition="'$(OS)' == 'Windows_NT'">set $(_AOTBuildArgsSIMD)</_AOTBuildArgsSIMD>
21+
</PropertyGroup>
22+
23+
<ItemGroup>
24+
<!-- remove the existing item -->
25+
<HelixWorkItem Remove="@(HelixWorkItem)" Condition="'%(HelixWorkItem.Identity)' == '$(Scenario)-$(_RuntimeIntrinsicsProjectName)'" />
26+
27+
<HelixWorkItem Include="$(WorkItemPrefix)non-simd-$(_RuntimeIntrinsicsProjectName)">
28+
<PayloadArchive>$(TestArchiveTestsDir)$(_RuntimeIntrinsicsProjectName).zip</PayloadArchive>
29+
<Command>$(HelixCommand)</Command>
30+
<Timeout>$(_workItemTimeout)</Timeout>
31+
</HelixWorkItem>
32+
33+
<HelixWorkItem Include="$(WorkItemPrefix)simd-$(_RuntimeIntrinsicsProjectName)">
34+
<PayloadArchive>$(TestArchiveTestsDir)$(_RuntimeIntrinsicsProjectName).zip</PayloadArchive>
35+
<Command>$(HelixCommand)</Command>
36+
<Timeout>$(_workItemTimeout)</Timeout>
37+
38+
<PreCommands>$(_AOTBuildArgsSIMD)</PreCommands>
39+
</HelixWorkItem>
40+
41+
<_RuntimeIntrinsicsHelixItem
42+
Include="@(HelixWorkItem)"
43+
Condition="$([System.String]::new('%(HelixWorkItem.Identity)').EndsWith('-$(_RuntimeIntrinsicsProjectName)'))" />
44+
</ItemGroup>
45+
46+
<Error Text="Something went wrong. Expected to have only two work items for $(_RuntimeIntrinsicsProjectName). But got @(_RuntimeIntrinsicsHelixItem)"
47+
Condition="@(_RuntimeIntrinsicsHelixItem->Count()) != 2" />
48+
</Target>
49+
</Project>

src/libraries/sendtohelix-wasm.targets

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,9 @@
305305
<_EmSdkFiles Include="$(EMSDK_PATH)\**\*" Exclude="$(EMSDK_PATH)\.git\**\*" />
306306
</ItemGroup>
307307

308-
<Copy SourceFiles="@(_EmSdkFiles)" DestinationFolder="$(EmSdkDirForHelixPayload)\%(RecursiveDir)" />
308+
<Copy SourceFiles="@(_EmSdkFiles)"
309+
DestinationFiles="@(_EmSdkFiles -> '$(EmSdkDirForHelixPayload)\%(RecursiveDir)%(FileName)%(Extension)')"
310+
SkipUnchangedFiles="true" />
309311
</Target>
310312

311313
<Target Name="DownloadFirefoxToSendToHelix" Condition="!Exists($(FirefoxForHelixPayload)) and '$(DebuggerHost)' == 'firefox'">

src/libraries/tests.proj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<TestPackages Condition="'$(TestPackages)' == ''">false</TestPackages>
2020
<TestTrimming Condition="'$(TestTrimming)' == ''">false</TestTrimming>
2121

22+
<RunWasmSIMDSmokeTests Condition="'$(TargetOS)' == 'browser' and '$(BuildAOTTestsOnHelix)' == 'true' and '$(ContinuousIntegrationBuild)' == 'true'">true</RunWasmSIMDSmokeTests>
2223
<RunHighAOTResourceRequiringTestsOnly Condition="'$(RunHighAOTResourceRequiringTestsOnly)' == ''">false</RunHighAOTResourceRequiringTestsOnly>
2324

2425
<!-- Don't build samples, and functional tests on EAT, AOT, WBT, and Debugger lanes -->
@@ -545,7 +546,12 @@
545546
</ItemGroup>
546547

547548
<ItemGroup>
548-
<SmokeTestProject Include="$(MSBuildThisFileDirectory)System.Runtime\tests\System.Runtime.Tests.csproj" />
549+
<SmokeTestProject Include="$(MSBuildThisFileDirectory)System.Runtime\tests\System.Runtime.Tests.csproj" />
550+
551+
<!-- Test SIMD too -->
552+
<SmokeTestProject
553+
Condition="'$(RunWasmSIMDSmokeTests)' == 'true'"
554+
Include="$(MSBuildThisFileDirectory)System.Runtime.Intrinsics\tests\System.Runtime.Intrinsics.Tests.csproj" />
549555
</ItemGroup>
550556

551557
<ItemGroup Condition="'$(TestNativeAot)' == 'true'">

0 commit comments

Comments
 (0)