-
Notifications
You must be signed in to change notification settings - Fork 5.1k
Sve: Preliminary support for agnostic VL for JIT scenarios #115948
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 96 commits
d22af4f
41a1d05
c7d8ede
926eb69
2b39810
cf9ea60
21f364b
7a513ed
b1c9833
4f92c23
6e63a3c
1eb159f
df7203f
734aba5
a71b8de
2e8cfd5
1d74f82
699d2e1
7f8ff24
3d19d51
70c09f9
53df3d7
b1d4ce9
29564cb
45ab7b9
3837693
ca1675c
7774e07
c170a7e
15f0384
84d7bf3
2dff8b8
58c872c
d6d197d
ad47578
fafee9a
b475834
37a78d7
e9eeca6
8e90959
e00d016
f14f792
e976b40
cb68fb9
fe633ed
2285a07
9bdb3b9
5c6392c
bf9991c
a04d52b
8376fc1
1cebe09
c626047
62a2d9f
cd17e41
f9567fd
9145170
4a76f71
a102b6f
eead7d7
6d139ee
715a2c0
b5d4460
15bb8a4
9e99f27
a9367ad
9d9b20b
8d8ba75
41c7629
6e6cc12
9cc2794
c03bb1c
8afd32a
df8c7ab
8ee5339
abd6e21
c212d25
7b11beb
5dcd5e9
c6c6671
a4d5a9b
e5f308f
c2e5c23
decd987
be418ae
1a33102
a5889f6
f97a198
897f474
63a31fb
05cfde4
a8020fa
f6e82cf
784bc9d
5df58bf
1e97247
355856d
dd0d483
182ba12
a3e364d
7841140
10f2530
47b106f
b4ca14a
98f0e25
53f4c81
429e32d
7c26e21
ee9a4eb
dbbd311
635148c
9e70dd0
f482e65
05b4d06
6a73a98
d523ee3
98fa9f3
9074461
bcb7bee
f151c64
838ce58
39374e3
324d241
fc24657
a997047
f10bb0b
303d7ce
49a536a
8368b81
61ed25f
7f88033
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -25,24 +25,25 @@ enum CORINFO_InstructionSet | |
InstructionSet_Sha1=7, | ||
InstructionSet_Sha256=8, | ||
InstructionSet_Atomics=9, | ||
InstructionSet_Vector64=10, | ||
InstructionSet_Vector128=11, | ||
InstructionSet_Dczva=12, | ||
InstructionSet_Rcpc=13, | ||
InstructionSet_VectorT128=14, | ||
InstructionSet_Rcpc2=15, | ||
InstructionSet_Sve=16, | ||
InstructionSet_Sve2=17, | ||
InstructionSet_ArmBase_Arm64=18, | ||
InstructionSet_AdvSimd_Arm64=19, | ||
InstructionSet_Aes_Arm64=20, | ||
InstructionSet_Crc32_Arm64=21, | ||
InstructionSet_Dp_Arm64=22, | ||
InstructionSet_Rdm_Arm64=23, | ||
InstructionSet_Sha1_Arm64=24, | ||
InstructionSet_Sha256_Arm64=25, | ||
InstructionSet_Sve_Arm64=26, | ||
InstructionSet_Sve2_Arm64=27, | ||
InstructionSet_Vector=10, | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we need this? Can't it just be There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We do map them to SVE intrinsics in |
||
InstructionSet_Vector64=11, | ||
InstructionSet_Vector128=12, | ||
InstructionSet_Dczva=13, | ||
InstructionSet_Rcpc=14, | ||
InstructionSet_VectorT128=15, | ||
InstructionSet_Rcpc2=16, | ||
InstructionSet_Sve=17, | ||
InstructionSet_Sve2=18, | ||
InstructionSet_ArmBase_Arm64=19, | ||
InstructionSet_AdvSimd_Arm64=20, | ||
InstructionSet_Aes_Arm64=21, | ||
InstructionSet_Crc32_Arm64=22, | ||
InstructionSet_Dp_Arm64=23, | ||
InstructionSet_Rdm_Arm64=24, | ||
InstructionSet_Sha1_Arm64=25, | ||
InstructionSet_Sha256_Arm64=26, | ||
InstructionSet_Sve_Arm64=27, | ||
InstructionSet_Sve2_Arm64=28, | ||
#endif // TARGET_ARM64 | ||
#ifdef TARGET_RISCV64 | ||
InstructionSet_RiscV64Base=1, | ||
|
@@ -379,6 +380,8 @@ inline CORINFO_InstructionSetFlags EnsureInstructionSetFlagsAreValid(CORINFO_Ins | |
resultflags.RemoveInstructionSet(InstructionSet_Sve); | ||
if (resultflags.HasInstructionSet(InstructionSet_Sve2) && !resultflags.HasInstructionSet(InstructionSet_Sve)) | ||
resultflags.RemoveInstructionSet(InstructionSet_Sve2); | ||
if (resultflags.HasInstructionSet(InstructionSet_Vector) && !resultflags.HasInstructionSet(InstructionSet_Sve)) | ||
resultflags.RemoveInstructionSet(InstructionSet_Vector); | ||
#endif // TARGET_ARM64 | ||
#ifdef TARGET_RISCV64 | ||
if (resultflags.HasInstructionSet(InstructionSet_Zbb) && !resultflags.HasInstructionSet(InstructionSet_RiscV64Base)) | ||
|
@@ -627,6 +630,8 @@ inline const char *InstructionSetToString(CORINFO_InstructionSet instructionSet) | |
return "Sha256_Arm64"; | ||
case InstructionSet_Atomics : | ||
return "Atomics"; | ||
case InstructionSet_Vector : | ||
return "Vector"; | ||
case InstructionSet_Vector64 : | ||
return "Vector64"; | ||
case InstructionSet_Vector128 : | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These seem unnecessary and/or inappropriate to add.
It feels like it should be some
CORINFO_HFA_ELEM_VECTOR
instead to indicate it is explicitly a variable length vector, as the SVE ABI may have differing conventions/considerations and we want to identify that it is explicitly that.