@@ -147,11 +147,13 @@ __m256 test_mm256_castpd_ps(__m256d A) {
147
147
// CHECK-LABEL: test_mm256_castpd_ps
148
148
return _mm256_castpd_ps (A );
149
149
}
150
+ TEST_CONSTEXPR (match_m256 (_mm256_castpd_ps ((__m256d ){-1.0 , +2.0 , +4.0 , -6.0 }), +0.0f , -1.875f , +0.0f , +2.0f , +0.0f , +2.25f , 0.0f , -2.375f ));
150
151
151
152
__m256i test_mm256_castpd_si256 (__m256d A ) {
152
153
// CHECK-LABEL: test_mm256_castpd_si256
153
154
return _mm256_castpd_si256 (A );
154
155
}
156
+ TEST_CONSTEXPR (match_m256i (_mm256_castpd_si256 ((__m256d ){-1.0 , +2.0 , -3.0 , +4.0 }), 0xBFF0000000000000ULL , 0x4000000000000000ULL , 0xC008000000000000ULL , 0x4010000000000000ULL ));
155
157
156
158
__m256d test_mm256_castpd128_pd256 (__m128d A ) {
157
159
// CHECK-LABEL: test_mm256_castpd128_pd256
@@ -165,16 +167,19 @@ __m128d test_mm256_castpd256_pd128(__m256d A) {
165
167
// CHECK: shufflevector <4 x double> %{{.*}}, <4 x double> %{{.*}}, <2 x i32> <i32 0, i32 1>
166
168
return _mm256_castpd256_pd128 (A );
167
169
}
170
+ TEST_CONSTEXPR (match_m128d (_mm256_castpd256_pd128 ((__m256d ){-1.0 , +2.0 , -3.0 , +4.0 }), -1.0 , +2.0 ));
168
171
169
172
__m256d test_mm256_castps_pd (__m256 A ) {
170
173
// CHECK-LABEL: test_mm256_castps_pd
171
174
return _mm256_castps_pd (A );
172
175
}
176
+ TEST_CONSTEXPR (match_m256d (_mm256_castps_pd ((__m256 ){0.0f , -1.0f , 0.0f , 4.0f , 0.0f , -2.0f , 0.0f , 6.0f }), -0.0078125 , 512.0 , -2.0 , +8192.0 ));
173
177
174
178
__m256i test_mm256_castps_si256 (__m256 A ) {
175
179
// CHECK-LABEL: test_mm256_castps_si256
176
180
return _mm256_castps_si256 (A );
177
181
}
182
+ TEST_CONSTEXPR (match_m256i (_mm256_castps_si256 ((__m256 ){1.0f , -2.0f , -4.0f , 8.0f , -16.0f , +16.0f , +32.0f , -32.0f }), 0xC00000003F800000ULL , 0x41000000c0800000ULL , 0x41800000C1800000ULL , 0xC200000042000000ULL ));
178
183
179
184
__m256 test_mm256_castps128_ps256 (__m128 A ) {
180
185
// CHECK-LABEL: test_mm256_castps128_ps256
@@ -188,6 +193,7 @@ __m128 test_mm256_castps256_ps128(__m256 A) {
188
193
// CHECK: shufflevector <8 x float> %{{.*}}, <8 x float> %{{.*}}, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
189
194
return _mm256_castps256_ps128 (A );
190
195
}
196
+ TEST_CONSTEXPR (match_m128 (_mm256_castps256_ps128 ((__m256 ){1.0f , -2.0f , -4.0f , 8.0f , -16.0f , +16.0f , +32.0f , -32.0f }), 1.0f , -2.0f , -4.0f , 8.0f ));
191
197
192
198
__m256i test_mm256_castsi128_si256 (__m128i A ) {
193
199
// CHECK-LABEL: test_mm256_castsi128_si256
@@ -200,17 +206,20 @@ __m256d test_mm256_castsi256_pd(__m256i A) {
200
206
// CHECK-LABEL: test_mm256_castsi256_pd
201
207
return _mm256_castsi256_pd (A );
202
208
}
209
+ TEST_CONSTEXPR (match_m256d (_mm256_castsi256_pd ((__m256i )(__v4du ){0x4070000000000000ULL , 0xC000000000000000ULL , 0xBFF0000000000000ULL , 0xC008000000000000ULL }), 256.0 , -2.0 , -1.0 , -3.0 ));
203
210
204
211
__m256 test_mm256_castsi256_ps (__m256i A ) {
205
212
// CHECK-LABEL: test_mm256_castsi256_ps
206
213
return _mm256_castsi256_ps (A );
207
214
}
215
+ TEST_CONSTEXPR (match_m256 (_mm256_castsi256_ps ((__m256i )(__v4du ){0x42000000c1800000ULL , 0x43000000c2800000ULL , 0x41000000c0800000ULL , 0xC00000003F800000ULL }), -16.0f , 32.0f , -64.0f , 128.0f , -4.0f , 8.0f , 1.0f , -2.0f ));
208
216
209
217
__m128i test_mm256_castsi256_si128 (__m256i A ) {
210
218
// CHECK-LABEL: test_mm256_castsi256_si128
211
219
// CHECK: shufflevector <4 x i64> %{{.*}}, <4 x i64> %{{.*}}, <2 x i32> <i32 0, i32 1>
212
220
return _mm256_castsi256_si128 (A );
213
221
}
222
+ TEST_CONSTEXPR (match_m128i (_mm256_castsi256_si128 ((__m256i )(__v4du ){0xBFF0000000000000ULL , 0x4070000000000000ULL , 0xC000000000000000ULL , 0xC008000000000000ULL }), 0xBFF0000000000000ULL , 0x4070000000000000ULL ));
214
223
215
224
__m256d test_mm256_ceil_pd (__m256d x ) {
216
225
// CHECK-LABEL: test_mm256_ceil_pd
0 commit comments