|
#include <unittest/unittest.h> |
|
|
|
#include <thrust/complex.h> |
|
#include <thrust/detail/preprocessor.h> |
|
#include <thrust/detail/alignment.h> |
|
|
|
#include <cuda_fp16.h> |
|
|
|
template <typename T, typename VectorT> |
|
void TestComplexAlignment() |
|
{ |
|
THRUST_STATIC_ASSERT( |
|
sizeof(thrust::complex<T>) == sizeof(VectorT) |
|
); |
|
THRUST_STATIC_ASSERT( |
|
THRUST_ALIGNOF(thrust::complex<T>) == THRUST_ALIGNOF(VectorT) |
|
); |
|
|
|
THRUST_STATIC_ASSERT( |
|
sizeof(thrust::complex<T const>) == sizeof(VectorT) |
|
); |
|
THRUST_STATIC_ASSERT( |
|
THRUST_ALIGNOF(thrust::complex<T const>) == THRUST_ALIGNOF(VectorT) |
|
); |
|
} |
|
DECLARE_UNITTEST_WITH_NAME( |
|
THRUST_PP_EXPAND_ARGS(TestComplexAlignment<char, char2>) |
|
, TestComplexCharAlignment |
|
); |
|
DECLARE_UNITTEST_WITH_NAME( |
|
THRUST_PP_EXPAND_ARGS(TestComplexAlignment<short, short2>) |
|
, TestComplexShortAlignment |
|
); |
|
DECLARE_UNITTEST_WITH_NAME( |
|
THRUST_PP_EXPAND_ARGS(TestComplexAlignment<int, int2>) |
|
, TestComplexIntAlignment |
|
); |
|
DECLARE_UNITTEST_WITH_NAME( |
|
THRUST_PP_EXPAND_ARGS(TestComplexAlignment<long, long2>) |
|
, TestComplexLongAlignment |
|
); |
|
DECLARE_UNITTEST_WITH_NAME( |
|
THRUST_PP_EXPAND_ARGS(TestComplexAlignment<__half, __half2>) |
|
, TestComplexHalfAlignment |
|
); |
|
DECLARE_UNITTEST_WITH_NAME( |
|
THRUST_PP_EXPAND_ARGS(TestComplexAlignment<float, float2>) |
|
, TestComplexFloatAlignment |
|
); |
|
DECLARE_UNITTEST_WITH_NAME( |
|
THRUST_PP_EXPAND_ARGS(TestComplexAlignment<double, double2>) |
|
, TestComplexDoubleAlignment |
|
); |
|
|