Skip to content
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

math, crypto, hash: Write power64 versions of assembler routines where applicable #8913

Open
ianlancetaylor opened this issue Oct 9, 2014 · 4 comments
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Milestone

Comments

@ianlancetaylor
Copy link
Contributor

We want to write power64 versions of the assembler routines in the math package, in
several crypto packages, and in the hash/crc32 package.  For each of those packages
where we have .s files, we should either write a power64 version or determine that the
Go version is as good as we can write in assembler.
@minux
Copy link
Member

minux commented Oct 9, 2014

Comment 1:

power8 has a lot of specific instructions for those kinds of things, i think hand
written assembly will definitely beat the generic version.
I assume you also mean math/big.

@minux
Copy link
Member

minux commented Oct 9, 2014

Comment 2:

also, there are some functions that belong to bytes and strings packages but reside in
the runtime package (e.g. bytes.Equal, bytes.IndexByte, etc.)
the memcmp and memclr in the runtime package also need to be rewritten.

@minux
Copy link
Member

minux commented Oct 9, 2014

Comment 3:

also, there are some functions that belong to bytes and strings packages but reside in
the runtime package (e.g. bytes.Equal, bytes.IndexByte, etc.)
the memcmp and memclr in the runtime package also need to be rewritten.

@ianlancetaylor
Copy link
Contributor Author

Comment 4:

This is specifically:
crypto/md5/md5block_power64x.s
crypto/rc4/rc4_power64x.s
crypto/sha1/sha1block_power64x.s
crypto/sha256/sha256block_power64x.s
crypto/sha512/sha512block_power64x.s
hash/crc32/crc32_power64x.s
math/abs_power64x.s
math/asin_power64x.s
math/atan2_power64x.s
math/atan_power64x.s
math/dim_power64x.s
math/exp2_power64x.s
math/exp_power64x.s
math/expm1_power64x.s
math/floor_power64x.s
math/frexp_power64x.s
math/hypot_power64x.s
math/ldexp_power64x.s
math/log10_power64x.s
math/log1p_power64x.s
math/low_power64x.s
math/mod_power64x.s
math/modf_power64x.s
math/remainder_power64x.s
math/sin_power64x.s
math/sincos_power64x.s
math/sqrt_power64x.s
math/tan_power64x.s
math/big/arith_power64x.s
reflect/asm_power64x.s
runtime/memclr_power64x.s
runtime/memmove_power64x.s
Several of the math files are likely to be trivial, simply jumps to the Go code.

@aclements aclements self-assigned this Dec 22, 2014
@rsc rsc removed the arch-ppc64 label Apr 10, 2015
@rsc rsc added this to the Unplanned milestone Apr 10, 2015
@seankhliao seankhliao added the NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one. label Jul 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
NeedsInvestigation Someone must examine and confirm this is a valid issue and not a duplicate of an existing one.
Projects
None yet
Development

No branches or pull requests

5 participants