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
proposal: MIPS32: pass ISA level with GOMIPS #59415
Comments
cc @golang/mips |
The |
Yes. Modified. |
I agree with this proposal. And this proposal is also suitable for MIPS64x. |
@HeliC829 you may want to file a separate proposal for changing the ISA level on MIPS64. Thanks. |
I tried introduce some instructions from MIPS R2 to MIPS32. The following data shows the test results and performance improvement if we can support mips r2 on mips32x.
|
@HeliC829 Are you putting those new instructions in assembly? Or is the compiler generating them? |
Those new instructions were generated by my local compiler. For this proposal, It's not enough to just have a runtime switch. I think this way is only suitable for some specific algorithm can run efficiently with advanced instructions set like avx2/sve2, and it also must be located golang source code. If we just use runtime switch, other encryption algorithm not located in golang source codelike chacha20 (CL 301711) can't get performance improvement by higher isa level. Besides, MIPS R2 also have some instruction like loading float-point indexed are waiting to be added. Those instructions can't be generated and used by runtime switch. I showed Thanks a lot. |
Which instructions are you adding? |
for MIPS32: WSBH/ROTR/RORTV |
Ok, so byte swaps, rotates, and leading zeroes. |
It sounds like the proposal is that GOMIPS is now a comma-separated list of the following choices:
hardfloat and softfloat are mutually exclusive and presumably r2 and r5 are as well. Can someone define r2 and r5? It sounds like they correspond to what gcc calls MIPS32R2 and MIPS32R5 in their documentation. Are those the official names? |
From the doc linked in #60072: |
Let's have one discussion. Marking this a duplicate of #60072. |
This proposal is a duplicate of a previously discussed proposal, as noted above, |
Currently GOMIPS accepts hardfloat(default) and softfload.
We wish that GOMIPS can also accept
r2
/r5
.Design:
,
(comma) is used to separate options.hardfloat
andsoftfloat
r2
r5
hardfloat
withr2
/r5, FPXX is used.for
hardfloat
with none of rN, FP32 is used.The text was updated successfully, but these errors were encountered: