-
Notifications
You must be signed in to change notification settings - Fork 6
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
Factorize SIMD code #222
Labels
Comments
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
By using `_mm_set_epi16` we can set the value using a single instruction instead of three. With this change, we can get rid of the MMX instructions `_mm_setzero_si64` and `_mm_set_pi16`. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
First, add some useful instruction set-specific definitions. Two types: - RegisterType: underlying representation of the future Register class. - MaskType: same as RegisterType, but for the Mask class. Three useful constants: - INSTRUCTION_SET: useful for discrimination. - ALIGNMENT: useful for memory allocation. - REG_BITSZ: useful for iteration. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
This first test is pretty dumb, but it will be useful to bootstrap and setup the CircleCI pipeline. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
That way, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
That way, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
That way, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
First, add some useful instruction set-specific definitions. Two types: - RegisterType: underlying representation of the future Register class. - MaskType: same as RegisterType, but for the Mask class. Three useful constants: - INSTRUCTION_SET: useful for discrimination. - ALIGNMENT: useful for memory allocation. - REG_BITSZ: useful for iteration. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
This first test is pretty dumb, but it will be useful to bootstrap and setup the CircleCI pipeline. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
That way, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 12, 2018
That way, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
First, add some useful instruction set-specific definitions. Two types: - RegisterType: underlying representation of the future Register class. - MaskType: same as RegisterType, but for the Mask class. Three useful constants: - INSTRUCTION_SET: useful for discrimination. - ALIGNMENT: useful for memory allocation. - REG_BITSZ: useful for iteration. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
This first test is pretty dumb, but it will be useful to bootstrap and setup the CircleCI pipeline. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
That way, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
With this allocator we can use the STL container, such as std::vector, and be sure that we can use aligned load instruction when necessary. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
First, add some useful instruction set-specific definitions. Two types: - RegisterType: underlying representation of the future Register class. - MaskType: same as RegisterType, but for the Mask class. Three useful constants: - INSTRUCTION_SET: useful for discrimination. - ALIGNMENT: useful for memory allocation. - REG_BITSZ: useful for iteration. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
This first test is pretty dumb, but it will be useful to bootstrap and setup the CircleCI pipeline. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
Now, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
With this allocator we can use the STL container, such as std::vector, and be sure that we can use aligned load instruction when necessary. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 15, 2018
The new implementation is more C++-like (can be used with STL container) and more robust (overflow handling, strict aliasing rule, …). Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
Now, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
With this allocator we can use the STL container, such as std::vector, and be sure that we can use aligned load instruction when necessary. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
The new implementation is more C++-like (can be used with STL container) and more robust (overflow handling, strict aliasing rule, …). Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
Now, we are sure that every codepath is covered and we won't silently break one of them. Refs: scality#222, scality#251
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
With this allocator we can use the STL container, such as std::vector, and be sure that we can use aligned load instruction when necessary. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 16, 2018
The new implementation is more C++-like (can be used with STL container) and more robust (overflow handling, strict aliasing rule, …). Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
With this allocator we can use the STL container, such as std::vector, and be sure that we can use aligned load instruction when necessary. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
The new implementation is more C++-like (can be used with STL container) and more robust (overflow handling, strict aliasing rule, …). Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
With this allocator we can use the STL container, such as std::vector, and be sure that we can use aligned load instruction when necessary. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
The new implementation is more C++-like (can be used with STL container) and more robust (overflow handling, strict aliasing rule, …). Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
With this allocator we can use the STL container, such as std::vector, and be sure that we can use aligned load instruction when necessary. Refs: scality#222
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
slaperche-scality
added a commit
to slaperche-scality/quadiron
that referenced
this issue
Oct 17, 2018
The new implementation is more C++-like (can be used with STL container) and more robust (overflow handling, strict aliasing rule, …). Refs: scality#222
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
There is way too much code duplication/copy paste between all the SIMD implementation (
simd_{128,256}_u{16,32}.h
).We must refactor this before adding more SIMD-feature, it's already barely maintainable…
The text was updated successfully, but these errors were encountered: