@@ -92,81 +92,24 @@ TEST_CASE("alignof", "[alignment]")
9292 STATIC_REQUIRE (alignof (alignof_mock_6) == sizeof (int ));
9393}
9494
95- TEST_CASE (" alignment_of" , " [alignment]" )
96- {
97- STATIC_REQUIRE (thrust::detail::alignment_of<bool >::value == sizeof (bool ));
98- STATIC_REQUIRE (thrust::detail::alignment_of<signed char >::value == sizeof (signed char ));
99- STATIC_REQUIRE (thrust::detail::alignment_of<unsigned char >::value == sizeof (unsigned char ));
100- STATIC_REQUIRE (thrust::detail::alignment_of<char >::value == sizeof (char ));
101- STATIC_REQUIRE (thrust::detail::alignment_of<short int >::value == sizeof (short int ));
102- STATIC_REQUIRE (thrust::detail::alignment_of<unsigned short int >::value == sizeof (unsigned short int ));
103- STATIC_REQUIRE (thrust::detail::alignment_of<int >::value == sizeof (int ));
104- STATIC_REQUIRE (thrust::detail::alignment_of<unsigned int >::value == sizeof (unsigned int ));
105- STATIC_REQUIRE (thrust::detail::alignment_of<long int >::value == sizeof (long int ));
106- STATIC_REQUIRE (thrust::detail::alignment_of<unsigned long int >::value == sizeof (unsigned long int ));
107- STATIC_REQUIRE (thrust::detail::alignment_of<long long int >::value == sizeof (long long int ));
108- STATIC_REQUIRE (thrust::detail::alignment_of<unsigned long long int >::value == sizeof (unsigned long long int ));
109- STATIC_REQUIRE (thrust::detail::alignment_of<float >::value == sizeof (float ));
110- STATIC_REQUIRE (thrust::detail::alignment_of<double >::value == sizeof (double ));
111- STATIC_REQUIRE (thrust::detail::alignment_of<long double >::value == sizeof (long double ));
112-
113- STATIC_REQUIRE (thrust::detail::alignment_of<alignof_mock_0>::value == sizeof (char ));
114- STATIC_REQUIRE (thrust::detail::alignment_of<alignof_mock_1>::value == sizeof (int ));
115- STATIC_REQUIRE (thrust::detail::alignment_of<alignof_mock_2>::value == sizeof (int ));
116- STATIC_REQUIRE (thrust::detail::alignment_of<alignof_mock_3>::value == sizeof (int ));
117- STATIC_REQUIRE (thrust::detail::alignment_of<alignof_mock_4>::value == sizeof (int ));
118- STATIC_REQUIRE (thrust::detail::alignment_of<alignof_mock_5>::value == sizeof (int ));
119- STATIC_REQUIRE (thrust::detail::alignment_of<alignof_mock_6>::value == sizeof (int ));
120- }
121-
122- template <std::size_t Align>
123- void test_aligned_type_instantiation ()
124- {
125- using type = typename thrust::detail::aligned_type<Align>::type;
126- STATIC_REQUIRE (sizeof (type) >= 1lu);
127- STATIC_REQUIRE (alignof (type) == Align);
128- STATIC_REQUIRE (thrust::detail::alignment_of<type>::value == Align);
129- }
130-
131- TEST_CASE (" aligned_type" , " [alignment]" )
95+ TEST_CASE (" aligned_reinterpret_cast" , " [alignment]" )
13296{
133- test_aligned_type_instantiation<1 >();
134- test_aligned_type_instantiation<2 >();
135- test_aligned_type_instantiation<4 >();
136- test_aligned_type_instantiation<8 >();
137- test_aligned_type_instantiation<16 >();
138- test_aligned_type_instantiation<32 >();
139- test_aligned_type_instantiation<64 >();
140- test_aligned_type_instantiation<128 >();
141- }
97+ struct alignas (128 ) T1
98+ {
99+ char data_[128 ];
100+ };
142101
143- TEST_CASE (" max_align_t" , " [alignment]" )
144- {
145- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (bool ));
146- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (signed char ));
147- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (unsigned char ));
148- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (char ));
149- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (short int ));
150- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (unsigned short int ));
151- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (int ));
152- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (unsigned int ));
153- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (long int ));
154- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (unsigned long int ));
155- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (long long int ));
156- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (unsigned long long int ));
157- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (float ));
158- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (double ));
159- STATIC_REQUIRE (alignof (thrust::detail::max_align_t ) >= alignof (long double ));
160- }
102+ struct alignas (512 ) T2
103+ {
104+ char data_[512 ];
105+ };
161106
162- TEST_CASE (" aligned_reinterpret_cast" , " [alignment]" )
163- {
164- thrust::detail::aligned_type<1 >* a1 = 0 ;
165- thrust::detail::aligned_type<2 >* a2 = 0 ;
107+ T1* a1 = 0 ;
108+ T2* a2 = 0 ;
166109
167110 // Cast to type with stricter (larger) alignment requirement.
168- a2 = thrust::detail::aligned_reinterpret_cast<thrust::detail::aligned_type< 2 > *>(a1);
111+ a2 = thrust::detail::aligned_reinterpret_cast<T2 *>(a1);
169112
170113 // Cast to type with less strict (smaller) alignment requirement.
171- a1 = thrust::detail::aligned_reinterpret_cast<thrust::detail::aligned_type< 1 > *>(a2);
114+ a1 = thrust::detail::aligned_reinterpret_cast<T1 *>(a2);
172115}
0 commit comments