-
Notifications
You must be signed in to change notification settings - Fork 153
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
Comments
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
No description provided.
The text was updated successfully, but these errors were encountered: