-
Notifications
You must be signed in to change notification settings - Fork 5.1k
[mono][1/2] Add SIMD Support for s390x #116669
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?
Conversation
This is the inital patch to support simd on s390x. on s390x we have 16 floating point registers and 32 vector registers out of which f0 - f15 overlap with v0 - v15. redefine the mirrored_mask logic for unequal masks in the register allocator.
cc: @uweigand , @nealef, @akoeplinger , @steveisok, @giritrivedi |
This is a followup patch to dotnet#116669 to add vector support to s390x
This is a followup patch to dotnet#116669 to add vector support to s390x
This is a followup patch to dotnet#116669 to add vector support to s390x
This is a followup patch to dotnet#116669 to add vector support to s390x
This is a followup patch to dotnet#116669 to add vector support to s390x
g_assert(regbank_size [MONO_REG_SIMD] == regbank_size [MONO_REG_DOUBLE]); | ||
#endif | ||
g_assert(regbank_callee_saved_regs [MONO_REG_SIMD] == regbank_callee_saved_regs [MONO_REG_DOUBLE]); | ||
#endif |
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.
Given that the regalloc code has now been changed to accept a SIMD regbank that is a superset of the FP regbank (without arch checks), maybe these assert should also be changed to accept that case in general (without arch checks). Something like
g_assert((regbank_callee_regs [MONO_REG_SIMD] & regbank_callee_regs[MONO_REG_DOUBLE])
== regbank_callee_regs [MONO_REG_DOUBLE]);
g_assert(regbank_size [MONO_REG_SIMD] >= regbank_size [MONO_REG_DOUBLE]);
(and of course update the comment above).
#define MONO_MAX_XREGS 31 | ||
#define MONO_ARCH_CALLEE_XREGS 0xFFFEFFFE | ||
#define MONO_ARCH_CALLEE_XREGS 0x0 |
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.
The old definition should be removed, or else the new won't take effect?
This is the inital patch to support simd on s390x. on s390x we have 16 floating point registers and 32 vector registers out of which f0 - f15 overlap with v0 - v15.
redefine the mirrored_mask logic for unequal masks in the register allocator.