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

Comments

Projects
None yet
4 participants
@ianlancetaylor
Copy link
Contributor

ianlancetaylor commented Oct 9, 2014

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

This comment has been minimized.

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

This comment has been minimized.

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

This comment has been minimized.

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

This comment has been minimized.

Copy link
Contributor Author

ianlancetaylor commented Oct 11, 2014

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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.