Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
c46495b
Add RelaxedSimd intrinsic API surface for WebAssembly Relaxed SIMD
lewing Jun 25, 2026
237fe25
Rename RelaxedSimd FMA methods to MultiplyAdd{,Negated}Estimate
lewing Jun 25, 2026
ced1d8c
Add WasmEnableRelaxedSimd MSBuild property and ILLink stubs
lewing Jun 25, 2026
407db71
Declare LLVM relaxed-SIMD intrinsics in Mono's intrinsic table
lewing Jun 25, 2026
7a05324
Wire RelaxedSimd into Mono's SIMD intrinsic recognizer
lewing Jun 25, 2026
5111361
[wasm] Wire RelaxedSimd through the Mono interpreter as a third SIMD …
lewing Jun 25, 2026
ff5d1cf
[wasm] Fix CI: drop stale -DENABLE_WASM_RELAXED_SIMD; define symbol i…
lewing Jun 30, 2026
bfebb64
[wasm] Fix CI: stop linking libmono-wasm-relaxed-simd.a unconditionally
lewing Jun 30, 2026
7f99067
[wasm] Address review feedback on RelaxedSimd surface
lewing Jul 5, 2026
af01e67
Merge branch 'main' into wasm-relaxed-simd-api
lewing Aug 18, 2026
24face4
Add Wasm RelaxedSimd intrinsics experiment
lewing Aug 19, 2026
59f799a
Add CoreCLR Wasm R2R RelaxedSimd support
lewing Aug 19, 2026
4678c49
Merge lewing-coreclr-relaxed-simd into wasm-relaxed-simd-api
lewing Aug 29, 2026
b88507e
Merge branch 'main' into wasm-relaxed-simd-api
lewing Aug 29, 2026
e812fb1
[wasm] Align RelaxedSimd with approved API
lewing Sep 2, 2026
cc593a9
Merge branch 'main' into wasm-relaxed-simd-api
lewing Sep 2, 2026
ac19c5f
[wasm] Fix relaxed SIMD fallback opcode sentinel
lewing Sep 2, 2026
64f4fa4
[wasm] Validate relaxed SIMD runtime configuration
lewing Sep 2, 2026
a71579e
[wasm] Ignore unresolved P/Invokes in intrinsics tests
lewing Sep 2, 2026
633d1c5
Merge main into wasm-relaxed-simd-api
lewing Sep 3, 2026
d84ac7a
Keep Wasm RelaxedSimd opt-in
lewing Sep 3, 2026
e77c88c
Restore Wasm instruction-set dependency propagation
lewing Sep 3, 2026
1879a24
Address RelaxedSimd review feedback
lewing Sep 3, 2026
9615031
Merge branch 'main' into wasm-relaxed-simd-api
lewing Sep 5, 2026
5334f97
Update Firefox used for wasm testing
lewing Sep 5, 2026
96522d1
Build macOS wasm cross tool for host architecture
lewing Sep 5, 2026
910f235
Merge branch 'main' into wasm-relaxed-simd-api
lewing Sep 6, 2026
e0beba1
Merge remote-tracking branch 'origin/main' into pr-130050-conflict-re…
lewing Sep 8, 2026
20f3497
Merge remote-tracking branch 'origin/main' into pr-130050-conflict-re…
lewing Sep 9, 2026
77282b2
[wasm] Address RelaxedSimd review feedback
lewing Sep 10, 2026
2e77915
[wasm] Move RelaxedSimd support handling to Mono
lewing Sep 12, 2026
2d37d3d
[wasm] Clean up SIMD intrinsic metadata and docs
lewing Sep 12, 2026
102b2d6
[wasm] Address RelaxedSimd test and WASI feedback
lewing Sep 12, 2026
5158971
[wasm] Remove RelaxedSimd lowering test
lewing Sep 12, 2026
2f536e9
[wasm] Select relaxed SIMD prelinked runtimes
lewing Sep 12, 2026
647195b
[wasm] Align jiterpreter relaxed SIMD opcodes
lewing Sep 12, 2026
f4975f4
[wasm] Address RelaxedSimd review cleanup
lewing Sep 13, 2026
40621ad
[wasm] Keep runtime-pack CoreLib at baseline SIMD
lewing Sep 13, 2026
32d19ff
[wasm] Configure RelaxedSimd in the shipped SDK
lewing Sep 13, 2026
2ff3481
[wasm] Enable relaxed SIMD in runtime wasm-opt
lewing Sep 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions eng/native.wasm.targets
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,14 @@
<BrowserHostInvariantGlobalization Condition="'$(BrowserHostInvariantGlobalization)' == ''">false</BrowserHostInvariantGlobalization>
<BrowserHostInvariantTimezone Condition="'$(BrowserHostInvariantTimezone)' == ''">false</BrowserHostInvariantTimezone>
<BrowserHostEnableDiagnostics Condition="'$(BrowserHostEnableDiagnostics)' == ''">false</BrowserHostEnableDiagnostics>
<BrowserHostEnableRelaxedSimd Condition="'$(BrowserHostEnableRelaxedSimd)' == ''">false</BrowserHostEnableRelaxedSimd>
</PropertyGroup>

<ItemGroup Condition="'$(TargetsBrowser)' == 'true' and '$(RuntimeFlavor)' == 'CoreCLR'">
<_CoreCLRPropertyThatTriggersRelinking Include="InvariantGlobalization" RuntimePackValue="$(BrowserHostInvariantGlobalization)" />
<_CoreCLRPropertyThatTriggersRelinking Include="InvariantTimezone" RuntimePackValue="$(BrowserHostInvariantTimezone)" />
<_CoreCLRPropertyThatTriggersRelinking Include="EnableDiagnostics" RuntimePackValue="$(BrowserHostEnableDiagnostics)" />
<_CoreCLRPropertyThatTriggersRelinking Include="WasmEnableRelaxedSimd" RuntimePackValue="$(BrowserHostEnableRelaxedSimd)" />
<_CoreCLRPropertyThatTriggersRelinking Include="WasmInitialHeapSize" RuntimePackValue="$(BrowserHostInitialHeapSize)" />
<_CoreCLRPropertyThatTriggersRelinking Include="EmccMaximumHeapSize" RuntimePackValue="$(BrowserHostMaximumHeapSize)" />
<_CoreCLRPropertyThatTriggersRelinking Include="EmccStackSize" RuntimePackValue="$(BrowserHostStackSize)" />
Expand Down
2 changes: 1 addition & 1 deletion eng/pipelines/coreclr/hardware-intrinsics-wasm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,4 @@ extends:
parameters:
platforms:
- browser_wasm
testBuildArgs: '/p:EnableWasmHWIntrinsicsTests=true -tree:JIT/HardwareIntrinsics/Wasm'
testBuildArgs: '/p:EnableWasmHWIntrinsicsTests=true /p:WasmEnableRelaxedSimd=true -tree:JIT/HardwareIntrinsics/Wasm'
2 changes: 1 addition & 1 deletion eng/pipelines/runtime.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1251,7 +1251,7 @@ extends:
runOnlyOnChromeVersionUpdate: true
shouldRunSmokeOnly: 'true'
nameSuffix: _SmokeMac
extraBuildArgs: /p:AotHostArchitecture=arm64 /p:AotHostOS=$(_hostedOS)
extraBuildArgs: /p:AotHostArchitecture=x64 /p:AotHostOS=$(_hostedOS)
Comment thread
lewing marked this conversation as resolved.
useHelixMonitor: ${{ variables.enableHelixJobMonitor }}
scenarios:
- WasmTestOnChrome
Expand Down
4 changes: 2 additions & 2 deletions eng/testing/BrowserVersions.props
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@
<win_ChromeRevision>1681091</win_ChromeRevision>
<win_ChromeBaseSnapshotUrl>https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/1681099</win_ChromeBaseSnapshotUrl>
<win_V8Version>15.3.76</win_V8Version>
<linux_FirefoxRevision>140.11.0esr</linux_FirefoxRevision>
<linux_FirefoxRevision>155.0.1</linux_FirefoxRevision>
<linux_GeckoDriverRevision>0.37.0</linux_GeckoDriverRevision>
<win_FirefoxRevision>140.11.0esr</win_FirefoxRevision>
<win_FirefoxRevision>155.0.1</win_FirefoxRevision>
<win_GeckoDriverRevision>0.37.0</win_GeckoDriverRevision>
</PropertyGroup>
</Project>
5 changes: 5 additions & 0 deletions eng/testing/tests.wasm.targets
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,16 @@
-->
<_WasmIntrinsicsSubstitutions Condition="'$(WasmEnableSIMD)' != 'false'">WasmIntrinsics</_WasmIntrinsicsSubstitutions>
<_WasmIntrinsicsSubstitutions Condition="'$(WasmEnableSIMD)' == 'false'">NoWasmIntrinsics</_WasmIntrinsicsSubstitutions>
<_WasmRelaxedSimdSubstitutions Condition="'$(WasmEnableSIMD)' != 'false' and '$(WasmEnableRelaxedSimd)' == 'true'">WasmRelaxedSimd</_WasmRelaxedSimdSubstitutions>
<_WasmRelaxedSimdSubstitutions Condition="'$(WasmEnableSIMD)' != 'false' and '$(WasmEnableRelaxedSimd)' != 'true'">NoWasmRelaxedSimd</_WasmRelaxedSimdSubstitutions>
Comment thread
lewing marked this conversation as resolved.
<!-- WasmEnableSIMD is about native codegen, and CoreCLR browser-wasm forces it on, but the CoreCLR
interpreter maps every System.Runtime.Intrinsics arch intrinsic except get_IsSupported to
PlatformNotSupportedException. Only crossgen'd code can execute them, so without ReadyToRun stubbing
IsSupported to true leaves a guarded SIMD path unconditionally reachable and it throws at startup. -->
<_WasmIntrinsicsSubstitutions Condition="'$(RuntimeFlavor)' == 'CoreCLR' and '$(PublishReadyToRun)' != 'true'">NoWasmIntrinsics</_WasmIntrinsicsSubstitutions>
<_WasmRelaxedSimdSubstitutions Condition="'$(RuntimeFlavor)' == 'CoreCLR' and '$(PublishReadyToRun)' != 'true'"></_WasmRelaxedSimdSubstitutions>
<_ExtraTrimmerArgs>$(_ExtraTrimmerArgs) --substitutions "$(BrowserProjectRoot)build\ILLink.Substitutions.$(_WasmIntrinsicsSubstitutions).xml"</_ExtraTrimmerArgs>
<_ExtraTrimmerArgs Condition="'$(_WasmRelaxedSimdSubstitutions)' != ''">$(_ExtraTrimmerArgs) --substitutions "$(BrowserProjectRoot)build\ILLink.Substitutions.$(_WasmRelaxedSimdSubstitutions).xml"</_ExtraTrimmerArgs>
</PropertyGroup>

<ItemGroup>
Expand Down Expand Up @@ -165,6 +169,7 @@
<_WasmPropertyNames Include="WasmBuildNative" />
<_WasmPropertyNames Include="WasmDebugLevel" />
<_WasmPropertyNames Include="WasmDedup" />
<_WasmPropertyNames Include="WasmEnableRelaxedSimd" />
<_WasmPropertyNames Include="WasmLinkIcalls" />
<_WasmPropertyNames Include="WasmNativeStrip" />
<_WasmPropertyNames Include="WasmNativeDebugSymbols" />
Expand Down
6 changes: 6 additions & 0 deletions src/coreclr/inc/corinfoinstructionset.h
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ enum CORINFO_InstructionSet
InstructionSet_WasmBase=1,
InstructionSet_PackedSimd=2,
InstructionSet_Vector128=3,
InstructionSet_RelaxedSimd=4,
#endif // TARGET_WASM
#ifdef TARGET_AMD64
InstructionSet_X86Base=1,
Expand Down Expand Up @@ -473,6 +474,8 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins
#ifdef TARGET_WASM
if (resultflags.HasInstructionSet(InstructionSet_Vector128) && !resultflags.HasInstructionSet(InstructionSet_PackedSimd))
resultflags.RemoveInstructionSet(InstructionSet_Vector128);
if (resultflags.HasInstructionSet(InstructionSet_RelaxedSimd) && !resultflags.HasInstructionSet(InstructionSet_PackedSimd))
resultflags.RemoveInstructionSet(InstructionSet_RelaxedSimd);
if (resultflags.HasInstructionSet(InstructionSet_PackedSimd) && !resultflags.HasInstructionSet(InstructionSet_WasmBase))
resultflags.RemoveInstructionSet(InstructionSet_PackedSimd);
#endif // TARGET_WASM
Expand Down Expand Up @@ -785,6 +788,8 @@ inline const char *InstructionSetToString(CORINFO_InstructionSet instructionSet)
return "PackedSimd";
case InstructionSet_Vector128 :
return "Vector128";
case InstructionSet_RelaxedSimd :
return "RelaxedSimd";
#endif // TARGET_WASM
#ifdef TARGET_AMD64
case InstructionSet_X86Base :
Expand Down Expand Up @@ -993,6 +998,7 @@ inline CORINFO_InstructionSet InstructionSetFromR2RInstructionSet(ReadyToRunInst
#ifdef TARGET_WASM
case READYTORUN_INSTRUCTION_WasmBase: return InstructionSet_WasmBase;
case READYTORUN_INSTRUCTION_PackedSimd: return InstructionSet_PackedSimd;
case READYTORUN_INSTRUCTION_RelaxedSimd: return InstructionSet_RelaxedSimd;
#endif // TARGET_WASM
#ifdef TARGET_AMD64
case READYTORUN_INSTRUCTION_X86Base: return InstructionSet_X86Base;
Expand Down
10 changes: 5 additions & 5 deletions src/coreclr/inc/jiteeversionguid.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,11 @@

#include <minipal/guid.h>

constexpr GUID JITEEVersionIdentifier = { /* 5a3e8dc8-83bf-47e5-b032-531dbd307dbe */
0x5a3e8dc8,
0x83bf,
0x47e5,
{0xb0, 0x32, 0x53, 0x1d, 0xbd, 0x30, 0x7d, 0xbe}
constexpr GUID JITEEVersionIdentifier = { /* d663060e-9184-48cb-b7dc-c8afa4b33a82 */
0xd663060e,
0x9184,
0x48cb,
{0xb7, 0xdc, 0xc8, 0xaf, 0xa4, 0xb3, 0x3a, 0x82}
};

#endif // JIT_EE_VERSIONING_GUID_H
1 change: 1 addition & 0 deletions src/coreclr/inc/readytoruninstructionset.h
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ enum ReadyToRunInstructionSet
READYTORUN_INSTRUCTION_Cssc=93,
READYTORUN_INSTRUCTION_Zicond=94,
READYTORUN_INSTRUCTION_Fp16=95,
READYTORUN_INSTRUCTION_RelaxedSimd=96,

};

Expand Down
1 change: 1 addition & 0 deletions src/coreclr/jit/hwintrinsic.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1019,6 +1019,7 @@ static const HWIntrinsicIsaRange hwintrinsicIsaRangeArray[] = {
{ FIRST_NI_WasmBase, LAST_NI_WasmBase }, // WasmBase
{ FIRST_NI_PackedSimd, LAST_NI_PackedSimd }, // PackedSimd
{ FIRST_NI_Vector, LAST_NI_Vector }, // Vector128
{ FIRST_NI_RelaxedSimd, LAST_NI_RelaxedSimd }, // RelaxedSimd
#else
#error Unsupported platform
#endif
Expand Down
15 changes: 15 additions & 0 deletions src/coreclr/jit/hwintrinsiclistwasm.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,21 @@ HARDWARE_INTRINSIC(PackedSimd, ZeroExtendWideningLower,
HARDWARE_INTRINSIC(PackedSimd, ZeroExtendWideningUpper, 16, 1, INS_i16x8_extend_high_u_i8x16, INS_i16x8_extend_high_u_i8x16, INS_i32x4_extend_high_u_i16x8, INS_i32x4_extend_high_u_i16x8, INS_i64x2_extend_high_u_i32x4, INS_i64x2_extend_high_u_i32x4, INS_invalid, INS_invalid, INS_invalid, INS_invalid, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
#define LAST_NI_PackedSimd NI_PackedSimd_ZeroExtendWideningUpper

// RelaxedSimd Intrinsics
#define FIRST_NI_RelaxedSimd NI_RelaxedSimd_ConvertToInt32Native
HARDWARE_INTRINSIC(RelaxedSimd, ConvertToInt32Native, 16, 1, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_i32x4_relaxed_trunc_f32x4_s, INS_i32x4_relaxed_trunc_f64x2_s_zero, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(RelaxedSimd, ConvertToUInt32Native, 16, 1, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_i32x4_relaxed_trunc_f32x4_u, INS_i32x4_relaxed_trunc_f64x2_u_zero, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(RelaxedSimd, DotProductAddNative, 16, 3, INS_i32x4_relaxed_dot_i8x16_i7x16_add_s, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(RelaxedSimd, DotProductNative, 16, 2, INS_i16x8_relaxed_dot_i8x16_i7x16_s, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(RelaxedSimd, LaneSelectNative, 16, 3, INS_i8x16_relaxed_laneselect, INS_i8x16_relaxed_laneselect, INS_i16x8_relaxed_laneselect, INS_i16x8_relaxed_laneselect, INS_i32x4_relaxed_laneselect, INS_i32x4_relaxed_laneselect, INS_i64x2_relaxed_laneselect, INS_i64x2_relaxed_laneselect, INS_invalid, INS_invalid, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(RelaxedSimd, MaxNative, 16, 2, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_f32x4_relaxed_max, INS_f64x2_relaxed_max, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_Commutative)
HARDWARE_INTRINSIC(RelaxedSimd, MinNative, 16, 2, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_f32x4_relaxed_min, INS_f64x2_relaxed_min, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_Commutative)
HARDWARE_INTRINSIC(RelaxedSimd, MultiplyAddEstimate, 16, 3, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_f32x4_relaxed_madd, INS_f64x2_relaxed_madd, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(RelaxedSimd, MultiplyAddNegatedEstimate, 16, 3, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_f32x4_relaxed_nmadd, INS_f64x2_relaxed_nmadd, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
HARDWARE_INTRINSIC(RelaxedSimd, MultiplyRoundedQ15Native, 16, 2, INS_invalid, INS_invalid, INS_i16x8_relaxed_q15mulr_s, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg|HW_Flag_Commutative)
HARDWARE_INTRINSIC(RelaxedSimd, SwizzleNative, 16, 2, INS_i8x16_relaxed_swizzle, INS_i8x16_relaxed_swizzle, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, INS_invalid, -1, -1, HW_Category_SIMD, HW_Flag_BaseTypeFromFirstArg)
#define LAST_NI_RelaxedSimd NI_RelaxedSimd_SwizzleNative

// WasmBase Intrinsics
// These scalar intrinsics are special-imported (see hwintrinsicwasm.cpp) and always rewritten into the
// existing NI_PRIMITIVE_*ZeroCount GT_INTRINSIC nodes (which codegen already emits as wasm clz/ctz), so
Expand Down
4 changes: 4 additions & 0 deletions src/coreclr/jit/hwintrinsicwasm.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ CORINFO_InstructionSet Compiler::lookupInstructionSet(const char* className)
{
return InstructionSet_PackedSimd;
}
else if (strcmp(className, "RelaxedSimd") == 0)
{
return InstructionSet_RelaxedSimd;
}
else if ((strcmp(className, "Vector128") == 0) || (strcmp(className, "Vector128`1") == 0))
{
return InstructionSet_Vector128;
Expand Down
22 changes: 22 additions & 0 deletions src/coreclr/jit/instrswasm.h
Original file line number Diff line number Diff line change
Expand Up @@ -527,6 +527,28 @@ INST2(i32x4_trunc_sat_u_f64x2_zero, "i32x4.trunc_sat_u_f64x2_zero", 0, IF_OP
INST2(f64x2_convert_low_s_i32x4, "f64x2.convert_low_s_i32x4", 0, IF_OPCODE, 0xFD, 254)
INST2(f64x2_convert_low_u_i32x4, "f64x2.convert_low_u_i32x4", 0, IF_OPCODE, 0xFD, 255)

// Relaxed SIMD operations
INST2(i8x16_relaxed_swizzle, "i8x16.relaxed_swizzle", 0, IF_OPCODE, 0xFD, 0x100)
INST2(i32x4_relaxed_trunc_f32x4_s, "i32x4.relaxed_trunc_f32x4_s", 0, IF_OPCODE, 0xFD, 0x101)
INST2(i32x4_relaxed_trunc_f32x4_u, "i32x4.relaxed_trunc_f32x4_u", 0, IF_OPCODE, 0xFD, 0x102)
INST2(i32x4_relaxed_trunc_f64x2_s_zero, "i32x4.relaxed_trunc_f64x2_s_zero", 0, IF_OPCODE, 0xFD, 0x103)
INST2(i32x4_relaxed_trunc_f64x2_u_zero, "i32x4.relaxed_trunc_f64x2_u_zero", 0, IF_OPCODE, 0xFD, 0x104)
INST2(f32x4_relaxed_madd, "f32x4.relaxed_madd", 0, IF_OPCODE, 0xFD, 0x105)
INST2(f32x4_relaxed_nmadd, "f32x4.relaxed_nmadd", 0, IF_OPCODE, 0xFD, 0x106)
INST2(f64x2_relaxed_madd, "f64x2.relaxed_madd", 0, IF_OPCODE, 0xFD, 0x107)
INST2(f64x2_relaxed_nmadd, "f64x2.relaxed_nmadd", 0, IF_OPCODE, 0xFD, 0x108)
INST2(i8x16_relaxed_laneselect, "i8x16.relaxed_laneselect", 0, IF_OPCODE, 0xFD, 0x109)
INST2(i16x8_relaxed_laneselect, "i16x8.relaxed_laneselect", 0, IF_OPCODE, 0xFD, 0x10A)
INST2(i32x4_relaxed_laneselect, "i32x4.relaxed_laneselect", 0, IF_OPCODE, 0xFD, 0x10B)
INST2(i64x2_relaxed_laneselect, "i64x2.relaxed_laneselect", 0, IF_OPCODE, 0xFD, 0x10C)
INST2(f32x4_relaxed_min, "f32x4.relaxed_min", 0, IF_OPCODE, 0xFD, 0x10D)
INST2(f32x4_relaxed_max, "f32x4.relaxed_max", 0, IF_OPCODE, 0xFD, 0x10E)
INST2(f64x2_relaxed_min, "f64x2.relaxed_min", 0, IF_OPCODE, 0xFD, 0x10F)
INST2(f64x2_relaxed_max, "f64x2.relaxed_max", 0, IF_OPCODE, 0xFD, 0x110)
INST2(i16x8_relaxed_q15mulr_s, "i16x8.relaxed_q15mulr_s", 0, IF_OPCODE, 0xFD, 0x111)
INST2(i16x8_relaxed_dot_i8x16_i7x16_s, "i16x8.relaxed_dot_i8x16_i7x16_s", 0, IF_OPCODE, 0xFD, 0x112)
INST2(i32x4_relaxed_dot_i8x16_i7x16_add_s, "i32x4.relaxed_dot_i8x16_i7x16_add_s", 0, IF_OPCODE, 0xFD, 0x113)

// clang-format on

#undef INST
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,5 +106,6 @@ public enum ReadyToRunInstructionSet
Cssc = 93,
Zicond = 94,
Fp16 = 95,
RelaxedSimd = 96,
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ public static class ReadyToRunInstructionSetHelper
case InstructionSet.Wasm32_WasmBase: return ReadyToRunInstructionSet.WasmBase;
case InstructionSet.Wasm32_PackedSimd: return ReadyToRunInstructionSet.PackedSimd;
case InstructionSet.Wasm32_Vector128: return null;
case InstructionSet.Wasm32_RelaxedSimd: return ReadyToRunInstructionSet.RelaxedSimd;

default: throw new Exception("Unknown instruction set");
}
Expand Down
Loading