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

drop internal StaticCastHelper in favor of convert<From, To> function #24

Closed
mattkretz opened this issue Jul 30, 2015 · 0 comments
Closed
Assignees
Milestone

Comments

@mattkretz
Copy link
Member

No description provided.

@mattkretz mattkretz self-assigned this Jul 30, 2015
@mattkretz mattkretz added this to the Vc 1.0 milestone Jul 30, 2015
mattkretz added a commit that referenced this issue Jul 30, 2015
* Implement the committee's suggestion to go with a policy parameter
instead of the namespace separation of ABI-incompatible Vector<T>
implementations.

* Vc::Vector<T, Abi = BestDefault> now allows to select the vector ABI
via the second template parameter. If nothing is selected explicitly the
default will make it behave similar to how it was before.

* Since the AVX integral vector types implemented the same ABI as the
SSE integral types, the implementation now captures this behavior by
defaulting to the AVX ABI for floating point types and SSE ABI for
integral types with AVX (but not AVX2) is enabled. With AVX2 enabled the
AVX ABI is used for integral types as well.

* A lot of common abstractions shared between AVX and SSE have moved to
the sse/detail.h and avx/detail.h headers. The main functionality this
currently contains is for (converting) loads. While at it, the interface
was significantly simplified, using overload resolution instead of
partially specialized template classes.

* The Scalar, SSE, AVX, and AVX2 namespaces still exist and still carry
the Vector<T> and Mask<T> types. These are now alias templates to the
Vc::Vector<T, Abi> and Vc::Mask<T, Abi> class templates. The AVX
namespace now is a mix of the Vector/Mask types from the SSE and AVX2
namespaces. The Vc_AVX_NAMESPACE macro consequently is dropped
altogether.

* The integral AVX2::Vector<T> types will need to double in size().
Right now they still retain the old AVX::Vector<T> behavior.

* Constrain the converting loads, requiring either one of the types to
be non-integral or to have a smaller source type (sizeof) than
destination type.

* Some progress on moving internal code to the Vc::Detail namespace.

* Clean up the internal SSE::StaticCastHelper via a nicer interface. The
old interface still works but should fade out.

* drop mm128_reinterpret_cast in favor of sse_cast.

Refs: gh-12, gh-23, gh-11, gh-24

Signed-off-by: Matthias Kretz <kretz@kde.org>
mattkretz added a commit that referenced this issue Jul 31, 2015
* Implement the committee's suggestion to go with a policy parameter
instead of the namespace separation of ABI-incompatible Vector<T>
implementations.

* Vc::Vector<T, Abi = BestDefault> now allows to select the vector ABI
via the second template parameter. If nothing is selected explicitly the
default will make it behave similar to how it was before.

* Since the AVX integral vector types implemented the same ABI as the
SSE integral types, the implementation now captures this behavior by
defaulting to the AVX ABI for floating point types and SSE ABI for
integral types with AVX (but not AVX2) is enabled. With AVX2 enabled the
AVX ABI is used for integral types as well.

* A lot of common abstractions shared between AVX and SSE have moved to
the sse/detail.h and avx/detail.h headers. The main functionality this
currently contains is for (converting) loads. While at it, the interface
was significantly simplified, using overload resolution instead of
partially specialized template classes.

* The Scalar, SSE, AVX, and AVX2 namespaces still exist and still carry
the Vector<T> and Mask<T> types. These are now alias templates to the
Vc::Vector<T, Abi> and Vc::Mask<T, Abi> class templates. The AVX
namespace now is a mix of the Vector/Mask types from the SSE and AVX2
namespaces. The Vc_AVX_NAMESPACE macro consequently is dropped
altogether.

* The integral AVX2::Vector<T> types will need to double in size().
Right now they still retain the old AVX::Vector<T> behavior.

* Constrain the converting loads, requiring either one of the types to
be non-integral or to have a smaller source type (sizeof) than
destination type.

* Some progress on moving internal code to the Vc::Detail namespace.

* Clean up the internal SSE::StaticCastHelper via a nicer interface. The
old interface still works but should fade out.

* drop mm128_reinterpret_cast in favor of sse_cast.

Refs: gh-12, gh-23, gh-11, gh-24

Signed-off-by: Matthias Kretz <kretz@kde.org>
mattkretz added a commit that referenced this issue Aug 4, 2015
* converted AVX::StaticCastHelper<From, To> to AVX::convert<From, To>
* ported integral conversions to proper AVX2 widths (not tested)
* moved add, sub, mul, broadcast from VectorHelper to Detail
* three new permute helper functions for AVX2
* implemented AVX2 simd_cast for the AVX2 widths
* added a operator[](Permutation::ReversedTag) overload to AVX::Vector
  in preparation of a generalized permutation API
* ported many integral AVX2::Vector functions to the new vector width
  (not tested)

Refs: gh-11, gh-23, gh-24

Signed-off-by: Matthias Kretz <kretz@kde.org>
mattkretz added a commit that referenced this issue Aug 12, 2015
* converted AVX::StaticCastHelper<From, To> to AVX::convert<From, To>
* ported integral conversions to proper AVX2 widths (not tested)
* moved add, sub, mul, broadcast from VectorHelper to Detail
* three new permute helper functions for AVX2
* implemented AVX2 simd_cast for the AVX2 widths
* added a operator[](Permutation::ReversedTag) overload to AVX::Vector
  in preparation of a generalized permutation API
* ported many integral AVX2::Vector functions to the new vector width
  (not tested)

Refs: gh-11, gh-23, gh-24

Signed-off-by: Matthias Kretz <kretz@kde.org>
mattkretz added a commit that referenced this issue Sep 29, 2015
* converted AVX::StaticCastHelper<From, To> to AVX::convert<From, To>
* ported integral conversions to proper AVX2 widths (not tested)
* moved add, sub, mul, broadcast from VectorHelper to Detail
* three new permute helper functions for AVX2
* implemented AVX2 simd_cast for the AVX2 widths
* added a operator[](Permutation::ReversedTag) overload to AVX::Vector
  in preparation of a generalized permutation API
* ported many integral AVX2::Vector functions to the new vector width
  (not tested)

Refs: gh-11, gh-23, gh-24

Signed-off-by: Matthias Kretz <kretz@kde.org>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant