Skip to content

Commit 1b2eb12

Browse files
Ensure that the new Vector512 related ISAs are covered by ILLink Substitutions (#83040)
* Ensure that the new Vector512 related ISAs are covered by ILLink Substitutions * Define the Avx512F and derived classes
1 parent 588dcd7 commit 1b2eb12

11 files changed

+381
-3
lines changed

src/libraries/System.Private.CoreLib/src/ILLink/ILLink.Substitutions.NoX86Intrinsics.xml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
<type fullname="System.Runtime.Intrinsics.Vector256">
44
<method signature="System.Boolean get_IsHardwareAccelerated()" body="stub" value="false" />
55
</type>
6+
<type fullname="System.Runtime.Intrinsics.Vector512">
7+
<method signature="System.Boolean get_IsHardwareAccelerated()" body="stub" value="false" />
8+
</type>
69
<type fullname="System.Runtime.Intrinsics.X86.Aes">
710
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
811
</type>
@@ -21,6 +24,42 @@
2124
<type fullname="System.Runtime.Intrinsics.X86.Avx2/X64">
2225
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
2326
</type>
27+
<type fullname="System.Runtime.Intrinsics.X86.Avx512BW">
28+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
29+
</type>
30+
<type fullname="System.Runtime.Intrinsics.X86.Avx512BW/VL">
31+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
32+
</type>
33+
<type fullname="System.Runtime.Intrinsics.X86.Avx512BW/X64">
34+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
35+
</type>
36+
<type fullname="System.Runtime.Intrinsics.X86.Avx512CD">
37+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
38+
</type>
39+
<type fullname="System.Runtime.Intrinsics.X86.Avx512CD/VL">
40+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
41+
</type>
42+
<type fullname="System.Runtime.Intrinsics.X86.Avx512CD/X64">
43+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
44+
</type>
45+
<type fullname="System.Runtime.Intrinsics.X86.Avx512DQ">
46+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
47+
</type>
48+
<type fullname="System.Runtime.Intrinsics.X86.Avx512DQ/VL">
49+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
50+
</type>
51+
<type fullname="System.Runtime.Intrinsics.X86.Avx512DQ/X64">
52+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
53+
</type>
54+
<type fullname="System.Runtime.Intrinsics.X86.Avx512F">
55+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
56+
</type>
57+
<type fullname="System.Runtime.Intrinsics.X86.Avx512F/VL">
58+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
59+
</type>
60+
<type fullname="System.Runtime.Intrinsics.X86.Avx512F/X64">
61+
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
62+
</type>
2463
<type fullname="System.Runtime.Intrinsics.X86.AvxVnni">
2564
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
2665
</type>
@@ -111,6 +150,5 @@
111150
<type fullname="System.Runtime.Intrinsics.X86.X86Serialize/X64">
112151
<method signature="System.Boolean get_IsSupported()" body="stub" value="false" />
113152
</type>
114-
115153
</assembly>
116154
</linker>

src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2422,6 +2422,10 @@
24222422
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Aes.cs" />
24232423
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx.cs" />
24242424
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx2.cs" />
2425+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512BW.cs" />
2426+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512CD.cs" />
2427+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512DQ.cs" />
2428+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512F.cs" />
24252429
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\AvxVnni.cs" />
24262430
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Bmi1.cs" />
24272431
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Bmi2.cs" />
@@ -2442,6 +2446,10 @@
24422446
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Aes.PlatformNotSupported.cs" />
24432447
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx.PlatformNotSupported.cs" />
24442448
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx2.PlatformNotSupported.cs" />
2449+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512BW.PlatformNotSupported.cs" />
2450+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512CD.PlatformNotSupported.cs" />
2451+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512DQ.PlatformNotSupported.cs" />
2452+
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Avx512F.PlatformNotSupported.cs" />
24452453
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\AvxVnni.PlatformNotSupported.cs" />
24462454
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Bmi1.PlatformNotSupported.cs" />
24472455
<Compile Include="$(MSBuildThisFileDirectory)System\Runtime\Intrinsics\X86\Bmi2.PlatformNotSupported.cs" />
@@ -2574,4 +2582,4 @@
25742582
<Compile Include="$(MSBuildThisFileDirectory)System\Numerics\IUnaryPlusOperators.cs" />
25752583
<Compile Include="$(MSBuildThisFileDirectory)System\Numerics\IUnsignedNumber.cs" />
25762584
</ItemGroup>
2577-
</Project>
2585+
</Project>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System;
5+
using System.Diagnostics.CodeAnalysis;
6+
using System.Runtime.CompilerServices;
7+
using System.Runtime.Intrinsics;
8+
9+
namespace System.Runtime.Intrinsics.X86
10+
{
11+
/// <summary>This class provides access to X86 AVX512BW hardware instructions via intrinsics</summary>
12+
[CLSCompliant(false)]
13+
public abstract class Avx512BW : Avx512F
14+
{
15+
internal Avx512BW() { }
16+
17+
public static new bool IsSupported { [Intrinsic] get { return false; } }
18+
19+
public new abstract class VL : Avx512F.VL
20+
{
21+
internal VL() { }
22+
23+
public static new bool IsSupported { [Intrinsic] get { return false; } }
24+
}
25+
26+
public new abstract class X64 : Avx512F.X64
27+
{
28+
internal X64() { }
29+
30+
public static new bool IsSupported { [Intrinsic] get { return false; } }
31+
}
32+
}
33+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System.Diagnostics.CodeAnalysis;
5+
using System.Runtime.CompilerServices;
6+
7+
namespace System.Runtime.Intrinsics.X86
8+
{
9+
/// <summary>This class provides access to X86 AVX512BW hardware instructions via intrinsics</summary>
10+
[Intrinsic]
11+
[CLSCompliant(false)]
12+
public abstract class Avx512BW : Avx512F
13+
{
14+
internal Avx512BW() { }
15+
16+
public static new bool IsSupported { get => IsSupported; }
17+
18+
[Intrinsic]
19+
public new abstract class VL : Avx512F.VL
20+
{
21+
internal VL() { }
22+
23+
public static new bool IsSupported { get => IsSupported; }
24+
}
25+
26+
[Intrinsic]
27+
public new abstract class X64 : Avx512F.X64
28+
{
29+
internal X64() { }
30+
31+
public static new bool IsSupported { get => IsSupported; }
32+
}
33+
}
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System;
5+
using System.Diagnostics.CodeAnalysis;
6+
using System.Runtime.CompilerServices;
7+
using System.Runtime.Intrinsics;
8+
9+
namespace System.Runtime.Intrinsics.X86
10+
{
11+
/// <summary>This class provides access to X86 AVX512CD hardware instructions via intrinsics</summary>
12+
[CLSCompliant(false)]
13+
public abstract class Avx512CD : Avx512F
14+
{
15+
internal Avx512CD() { }
16+
17+
public static new bool IsSupported { [Intrinsic] get { return false; } }
18+
19+
public new abstract class VL : Avx512F.VL
20+
{
21+
internal VL() { }
22+
23+
public static new bool IsSupported { [Intrinsic] get { return false; } }
24+
}
25+
26+
public new abstract class X64 : Avx512F.X64
27+
{
28+
internal X64() { }
29+
30+
public static new bool IsSupported { [Intrinsic] get { return false; } }
31+
}
32+
}
33+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System.Diagnostics.CodeAnalysis;
5+
using System.Runtime.CompilerServices;
6+
7+
namespace System.Runtime.Intrinsics.X86
8+
{
9+
/// <summary>This class provides access to X86 AVX512CD hardware instructions via intrinsics</summary>
10+
[Intrinsic]
11+
[CLSCompliant(false)]
12+
public abstract class Avx512CD : Avx512F
13+
{
14+
internal Avx512CD() { }
15+
16+
public static new bool IsSupported { get => IsSupported; }
17+
18+
[Intrinsic]
19+
public new abstract class VL : Avx512F.VL
20+
{
21+
internal VL() { }
22+
23+
public static new bool IsSupported { get => IsSupported; }
24+
}
25+
26+
[Intrinsic]
27+
public new abstract class X64 : Avx512F.X64
28+
{
29+
internal X64() { }
30+
31+
public static new bool IsSupported { get => IsSupported; }
32+
}
33+
}
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System;
5+
using System.Diagnostics.CodeAnalysis;
6+
using System.Runtime.CompilerServices;
7+
using System.Runtime.Intrinsics;
8+
9+
namespace System.Runtime.Intrinsics.X86
10+
{
11+
/// <summary>This class provides access to X86 AVX512DQ hardware instructions via intrinsics</summary>
12+
[CLSCompliant(false)]
13+
public abstract class Avx512DQ : Avx512F
14+
{
15+
internal Avx512DQ() { }
16+
17+
public static new bool IsSupported { [Intrinsic] get { return false; } }
18+
19+
public new abstract class VL : Avx512F.VL
20+
{
21+
internal VL() { }
22+
23+
public static new bool IsSupported { [Intrinsic] get { return false; } }
24+
}
25+
26+
public new abstract class X64 : Avx512F.X64
27+
{
28+
internal X64() { }
29+
30+
public static new bool IsSupported { [Intrinsic] get { return false; } }
31+
}
32+
}
33+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System.Diagnostics.CodeAnalysis;
5+
using System.Runtime.CompilerServices;
6+
7+
namespace System.Runtime.Intrinsics.X86
8+
{
9+
/// <summary>This class provides access to X86 AVX512DQ hardware instructions via intrinsics</summary>
10+
[Intrinsic]
11+
[CLSCompliant(false)]
12+
public abstract class Avx512DQ : Avx512F
13+
{
14+
internal Avx512DQ() { }
15+
16+
public static new bool IsSupported { get => IsSupported; }
17+
18+
[Intrinsic]
19+
public new abstract class VL : Avx512F.VL
20+
{
21+
internal VL() { }
22+
23+
public static new bool IsSupported { get => IsSupported; }
24+
}
25+
26+
[Intrinsic]
27+
public new abstract class X64 : Avx512F.X64
28+
{
29+
internal X64() { }
30+
31+
public static new bool IsSupported { get => IsSupported; }
32+
}
33+
}
34+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System;
5+
using System.Diagnostics.CodeAnalysis;
6+
using System.Runtime.CompilerServices;
7+
using System.Runtime.Intrinsics;
8+
9+
namespace System.Runtime.Intrinsics.X86
10+
{
11+
/// <summary>This class provides access to X86 AVX512F hardware instructions via intrinsics</summary>
12+
[CLSCompliant(false)]
13+
public abstract class Avx512F : Avx2
14+
{
15+
internal Avx512F() { }
16+
17+
public static new bool IsSupported { [Intrinsic] get { return false; } }
18+
19+
public abstract class VL
20+
{
21+
internal VL() { }
22+
23+
public static bool IsSupported { [Intrinsic] get { return false; } }
24+
}
25+
26+
public new abstract class X64 : Avx2.X64
27+
{
28+
internal X64() { }
29+
30+
public static new bool IsSupported { [Intrinsic] get { return false; } }
31+
}
32+
}
33+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
4+
using System.Diagnostics.CodeAnalysis;
5+
using System.Runtime.CompilerServices;
6+
7+
namespace System.Runtime.Intrinsics.X86
8+
{
9+
/// <summary>This class provides access to X86 AVX512F hardware instructions via intrinsics</summary>
10+
[Intrinsic]
11+
[CLSCompliant(false)]
12+
public abstract class Avx512F : Avx2
13+
{
14+
internal Avx512F() { }
15+
16+
public static new bool IsSupported { get => IsSupported; }
17+
18+
[Intrinsic]
19+
public abstract class VL
20+
{
21+
internal VL() { }
22+
23+
public static bool IsSupported { get => IsSupported; }
24+
}
25+
26+
[Intrinsic]
27+
public new abstract class X64 : Avx2.X64
28+
{
29+
internal X64() { }
30+
31+
public static new bool IsSupported { get => IsSupported; }
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)