go ``` cmd/compile: 在所有架构上实现math/bits.RotateLeft{32,64}的内联化 ```

irlmq6kh  于 4个月前  发布在  Go
关注(0)|答案(9)|浏览(53)

21536 (评论)提醒我这件事。目前,内在实现仅在amd64、arm64、ppc64和s390x上可用。我们应该在所有平台上启用它。它需要在tests/codegen上进行测试。这可能是一个很好的初学者编译器问题来解决。

迄今为止的CLs:

70gysomp

70gysomp1#

cc @benshi001 for arm

ncecgwcz

ncecgwcz2#

请@bmkessler注意此问题,他可能对此也感兴趣。

u2nhd7ah

u2nhd7ah3#

https://golang.org/cl/182359提到了这个问题:cmd/compile: intrinsify RotateLeft32 on wasm

bqucvtff

bqucvtff4#

https://golang.org/cl/188697提到了这个问题:cmd/compile: optimize ARM's math.bits.RotateLeft32

dvtswwa3

dvtswwa35#

https://golang.org/cl/189277提到了这个问题:cmd/compile: optimize 386's math.bits.RotateLeft32

hgc7kmma

hgc7kmma6#

好的,在这里检查各个GOARCH的状态。

GOARCHCLsDone
38689277
amd64132435
arm188697
arm64122542
mips
mips64
mips64le
mipsle
ppc64163760
ppc64le163760
s390x133035
wasm182359

从上面的表格中,我们目前缺少mips和ppc64le的GOARCH变体。请ping你@ceseo,看看你是否有带宽为ppc64le提交CL?@cherrymui@randall77你们是否可以为mips工作或者有其他Maven的建议?我认为我们可以在Go1.14中解决这个问题。感谢所有提交CL、审查或讨论获取CL以解决问题的人,做得很好!

7uzetpgm

7uzetpgm7#

CL 163760应该同时覆盖ppc64和ppc64le,对吗?
在MIPS上,旋转指令相对较新。我们仍然支持较旧的机器。我想我们可以根据GOMIPS(64)值做一些事情,但我们需要先引入这些值。两个移位+一个OR听起来并不糟糕。

7ajki6be

7ajki6be8#

CL 163760应该同时支持ppc64和ppc64le,对吗?在MIPS上,旋转指令相对较新。我们仍然支持较旧的机器。我想我们可以根据GOMIPS(64)值做一些事情,但我们需要先引入这些值。两个移位+一个OR听起来还不错。—您收到此邮件是因为您订阅了此线程。直接回复此邮件,查看GitHub上的<#31265?email_source=notifications&email_token=ACH7BDATPMDS3OGUPJ25KW3QPBWS3A5CNFSM4HDWR4J2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEBQGSYY#issuecomment-543189347>,或者取消订阅<https://github.com/notifications/unsubscribe-auth/ACH7BDCQYEPWOO4KKTS3ZF3QPBWS3ANCNFSM4HDWR4JQ>。

myzjeezk

myzjeezk9#

CL 163760 应该同时支持ppc64和ppc64le,对吗?
在MIPS上,旋转指令相对较新。我们仍然支持较旧的机器。我想我们可以根据GOMIPS(64)值做一些事情,但我们需要先引入这些值。两个移位+一个OR听起来还不错。
根据维基百科,MIPS64X的最小要求是MIPS III,它于1991年推出。
我在想更新Go的MIPS64X最小要求为MIPS64 R2(而不是MIPS II),就像MIPS32X一样。
我们还可以添加编译标志:

GOMIPS64=r*

r2 = 发布2
r6 = 发布6
对于未来的MIPS64 r6,这是一个全新的指令集。
我们已经有了 GOMIPS64=hardfloat,并且通过用逗号分隔它们,不会与 r* 标志冲突,即 GOMIPS64=hardfloat,r2

相关问题