Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 3119731

Browse files
committed
[Arm64] Define ISA feature flags
1 parent ddab65b commit 3119731

File tree

3 files changed

+105
-16
lines changed

3 files changed

+105
-16
lines changed

src/inc/corinfo.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -213,11 +213,11 @@ TODO: Talk about initializing strutures before use
213213
#define SELECTANY extern __declspec(selectany)
214214
#endif
215215

216-
SELECTANY const GUID JITEEVersionIdentifier = { /* EBEE9A84-63C3-4610-9E4F-05491D335D67 */
217-
0xebee9a84,
218-
0x63c3,
219-
0x4610,
220-
{ 0x9e, 0x4f, 0x5, 0x49, 0x1d, 0x33, 0x5d, 0x67 }
216+
SELECTANY const GUID JITEEVersionIdentifier = { /* 01c3d216-a404-4290-8278-ac27a4793d31 */
217+
0x01c3d216,
218+
0xa404,
219+
0x4290,
220+
{0x82, 0x78, 0xac, 0x27, 0xa4, 0x79, 0x3d, 0x31}
221221
};
222222

223223
//////////////////////////////////////////////////////////////////////////////////////////////////////////

src/inc/corjit.h

Lines changed: 50 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,31 @@ class CORJIT_FLAGS
161161

162162
CORJIT_FLAG_NO_INLINING = 42, // JIT should not inline any called method into this method
163163

164-
#if defined(_TARGET_X86_) || defined(_TARGET_AMD64_)
164+
#if defined(_TARGET_ARM64_)
165+
166+
CORJIT_FLAG_HAS_ARM64_AES = 43, // ID_AA64ISAR0_EL1.AES is 1 or better
167+
CORJIT_FLAG_HAS_ARM64_ATOMICS = 44, // ID_AA64ISAR0_EL1.Atomic is 2 or better
168+
CORJIT_FLAG_HAS_ARM64_CRC32 = 45, // ID_AA64ISAR0_EL1.CRC32 is 1 or better
169+
CORJIT_FLAG_HAS_ARM64_DCPOP = 46, // ID_AA64ISAR1_EL1.DPB is 1 or better
170+
CORJIT_FLAG_HAS_ARM64_DP = 47, // ID_AA64ISAR0_EL1.DP is 1 or better
171+
CORJIT_FLAG_HAS_ARM64_FCMA = 48, // ID_AA64ISAR1_EL1.FCMA is 1 or better
172+
CORJIT_FLAG_HAS_ARM64_FP = 49, // ID_AA64PFR0_EL1.FP is 0 or better
173+
CORJIT_FLAG_HAS_ARM64_FP16 = 50, // ID_AA64PFR0_EL1.FP is 1 or better
174+
CORJIT_FLAG_HAS_ARM64_JSCVT = 51, // ID_AA64ISAR1_EL1.JSCVT is 1 or better
175+
CORJIT_FLAG_HAS_ARM64_LRCPC = 52, // ID_AA64ISAR1_EL1.LRCPC is 1 or better
176+
CORJIT_FLAG_HAS_ARM64_PMULL = 53, // ID_AA64ISAR0_EL1.AES is 2 or better
177+
CORJIT_FLAG_HAS_ARM64_SHA1 = 54, // ID_AA64ISAR0_EL1.SHA1 is 1 or better
178+
CORJIT_FLAG_HAS_ARM64_SHA2 = 55, // ID_AA64ISAR0_EL1.SHA2 is 1 or better
179+
CORJIT_FLAG_HAS_ARM64_SHA512 = 56, // ID_AA64ISAR0_EL1.SHA2 is 2 or better
180+
CORJIT_FLAG_HAS_ARM64_SHA3 = 57, // ID_AA64ISAR0_EL1.SHA3 is 1 or better
181+
CORJIT_FLAG_HAS_ARM64_SIMD = 58, // ID_AA64PFR0_EL1.AdvSIMD is 0 or better
182+
CORJIT_FLAG_HAS_ARM64_SIMD_V81 = 59, // ID_AA64ISAR0_EL1.RDM is 1 or better
183+
CORJIT_FLAG_HAS_ARM64_SIMD_FP16 = 60, // ID_AA64PFR0_EL1.AdvSIMD is 1 or better
184+
CORJIT_FLAG_HAS_ARM64_SM3 = 61, // ID_AA64ISAR0_EL1.SM3 is 1 or better
185+
CORJIT_FLAG_HAS_ARM64_SM4 = 62, // ID_AA64ISAR0_EL1.SM4 is 1 or better
186+
CORJIT_FLAG_HAS_ARM64_SVE = 63 // ID_AA64PFR0_EL1.SVE is 1 or better
187+
188+
#elif defined(_TARGET_X86_) || defined(_TARGET_AMD64_)
165189

166190
CORJIT_FLAG_USE_SSE3 = 43,
167191
CORJIT_FLAG_USE_SSSE3 = 44,
@@ -173,10 +197,20 @@ class CORJIT_FLAGS
173197
CORJIT_FLAG_USE_FMA = 50,
174198
CORJIT_FLAG_USE_LZCNT = 51,
175199
CORJIT_FLAG_USE_PCLMULQDQ = 52,
176-
CORJIT_FLAG_USE_POPCNT = 53
200+
CORJIT_FLAG_USE_POPCNT = 53,
201+
CORJIT_FLAG_UNUSED23 = 54,
202+
CORJIT_FLAG_UNUSED24 = 55,
203+
CORJIT_FLAG_UNUSED25 = 56,
204+
CORJIT_FLAG_UNUSED26 = 57,
205+
CORJIT_FLAG_UNUSED27 = 58,
206+
CORJIT_FLAG_UNUSED28 = 59,
207+
CORJIT_FLAG_UNUSED29 = 60,
208+
CORJIT_FLAG_UNUSED30 = 61,
209+
CORJIT_FLAG_UNUSED31 = 62,
210+
CORJIT_FLAG_UNUSED32 = 63
177211

178212

179-
#else // !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
213+
#else // !defined(_TARGET_ARM64_) && !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
180214

181215
CORJIT_FLAG_UNUSED12 = 43,
182216
CORJIT_FLAG_UNUSED13 = 44,
@@ -188,9 +222,19 @@ class CORJIT_FLAGS
188222
CORJIT_FLAG_UNUSED19 = 50,
189223
CORJIT_FLAG_UNUSED20 = 51,
190224
CORJIT_FLAG_UNUSED21 = 52,
191-
CORJIT_FLAG_UNUSED22 = 53
192-
193-
#endif // !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
225+
CORJIT_FLAG_UNUSED22 = 53,
226+
CORJIT_FLAG_UNUSED23 = 54,
227+
CORJIT_FLAG_UNUSED24 = 55,
228+
CORJIT_FLAG_UNUSED25 = 56,
229+
CORJIT_FLAG_UNUSED26 = 57,
230+
CORJIT_FLAG_UNUSED27 = 58,
231+
CORJIT_FLAG_UNUSED28 = 59,
232+
CORJIT_FLAG_UNUSED29 = 60,
233+
CORJIT_FLAG_UNUSED30 = 61,
234+
CORJIT_FLAG_UNUSED31 = 62,
235+
CORJIT_FLAG_UNUSED32 = 63
236+
237+
#endif // !defined(_TARGET_ARM64_) && !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
194238
};
195239

196240
CORJIT_FLAGS()

src/jit/jitee.h

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,31 @@ class JitFlags
9393

9494
JIT_FLAG_NO_INLINING = 42, // JIT should not inline any called method into this method
9595

96-
#if defined(_TARGET_X86_) || defined(_TARGET_AMD64_)
96+
#if defined(_TARGET_ARM64_)
97+
98+
JIT_FLAG_HAS_ARM64_AES = 43, // ID_AA64ISAR0_EL1.AES is 1 or better
99+
JIT_FLAG_HAS_ARM64_ATOMICS = 44, // ID_AA64ISAR0_EL1.Atomic is 2 or better
100+
JIT_FLAG_HAS_ARM64_CRC32 = 45, // ID_AA64ISAR0_EL1.CRC32 is 1 or better
101+
JIT_FLAG_HAS_ARM64_DCPOP = 46, // ID_AA64ISAR1_EL1.DPB is 1 or better
102+
JIT_FLAG_HAS_ARM64_DP = 47, // ID_AA64ISAR0_EL1.DP is 1 or better
103+
JIT_FLAG_HAS_ARM64_FCMA = 48, // ID_AA64ISAR1_EL1.FCMA is 1 or better
104+
JIT_FLAG_HAS_ARM64_FP = 49, // ID_AA64PFR0_EL1.FP is 0 or better
105+
JIT_FLAG_HAS_ARM64_FP16 = 50, // ID_AA64PFR0_EL1.FP is 1 or better
106+
JIT_FLAG_HAS_ARM64_JSCVT = 51, // ID_AA64ISAR1_EL1.JSCVT is 1 or better
107+
JIT_FLAG_HAS_ARM64_LRCPC = 52, // ID_AA64ISAR1_EL1.LRCPC is 1 or better
108+
JIT_FLAG_HAS_ARM64_PMULL = 53, // ID_AA64ISAR0_EL1.AES is 2 or better
109+
JIT_FLAG_HAS_ARM64_SHA1 = 54, // ID_AA64ISAR0_EL1.SHA1 is 1 or better
110+
JIT_FLAG_HAS_ARM64_SHA2 = 55, // ID_AA64ISAR0_EL1.SHA2 is 1 or better
111+
JIT_FLAG_HAS_ARM64_SHA512 = 56, // ID_AA64ISAR0_EL1.SHA2 is 2 or better
112+
JIT_FLAG_HAS_ARM64_SHA3 = 57, // ID_AA64ISAR0_EL1.SHA3 is 1 or better
113+
JIT_FLAG_HAS_ARM64_SIMD = 58, // ID_AA64PFR0_EL1.AdvSIMD is 0 or better
114+
JIT_FLAG_HAS_ARM64_SIMD_V81 = 59, // ID_AA64ISAR0_EL1.RDM is 1 or better
115+
JIT_FLAG_HAS_ARM64_SIMD_FP16 = 60, // ID_AA64PFR0_EL1.AdvSIMD is 1 or better
116+
JIT_FLAG_HAS_ARM64_SM3 = 61, // ID_AA64ISAR0_EL1.SM3 is 1 or better
117+
JIT_FLAG_HAS_ARM64_SM4 = 62, // ID_AA64ISAR0_EL1.SM4 is 1 or better
118+
JIT_FLAG_HAS_ARM64_SVE = 63 // ID_AA64PFR0_EL1.SVE is 1 or better
119+
120+
#elif defined(_TARGET_X86_) || defined(_TARGET_AMD64_)
97121

98122
JIT_FLAG_USE_SSE3 = 43,
99123
JIT_FLAG_USE_SSSE3 = 44,
@@ -105,10 +129,20 @@ class JitFlags
105129
JIT_FLAG_USE_FMA = 50,
106130
JIT_FLAG_USE_LZCNT = 51,
107131
JIT_FLAG_USE_PCLMULQDQ = 52,
108-
JIT_FLAG_USE_POPCNT = 53
132+
JIT_FLAG_USE_POPCNT = 53,
133+
JIT_FLAG_UNUSED23 = 54,
134+
JIT_FLAG_UNUSED24 = 55,
135+
JIT_FLAG_UNUSED25 = 56,
136+
JIT_FLAG_UNUSED26 = 57,
137+
JIT_FLAG_UNUSED27 = 58,
138+
JIT_FLAG_UNUSED28 = 59,
139+
JIT_FLAG_UNUSED29 = 60,
140+
JIT_FLAG_UNUSED30 = 61,
141+
JIT_FLAG_UNUSED31 = 62,
142+
JIT_FLAG_UNUSED32 = 63
109143

110144

111-
#else // !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
145+
#else // !defined(_TARGET_ARM64_) && !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
112146

113147
JIT_FLAG_UNUSED12 = 43,
114148
JIT_FLAG_UNUSED13 = 44,
@@ -120,9 +154,20 @@ class JitFlags
120154
JIT_FLAG_UNUSED19 = 50,
121155
JIT_FLAG_UNUSED20 = 51,
122156
JIT_FLAG_UNUSED21 = 52,
123-
JIT_FLAG_UNUSED22 = 53
157+
JIT_FLAG_UNUSED22 = 53,
158+
JIT_FLAG_UNUSED23 = 54,
159+
JIT_FLAG_UNUSED24 = 55,
160+
JIT_FLAG_UNUSED25 = 56,
161+
JIT_FLAG_UNUSED26 = 57,
162+
JIT_FLAG_UNUSED27 = 58,
163+
JIT_FLAG_UNUSED28 = 59,
164+
JIT_FLAG_UNUSED29 = 60,
165+
JIT_FLAG_UNUSED30 = 61,
166+
JIT_FLAG_UNUSED31 = 62,
167+
JIT_FLAG_UNUSED32 = 63
168+
169+
#endif // !defined(_TARGET_ARM64_) && !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
124170

125-
#endif // !defined(_TARGET_X86_) && !defined(_TARGET_AMD64_)
126171
};
127172
// clang-format on
128173

0 commit comments

Comments
 (0)