File: f16c.c

package info (click to toggle)
simde 0.8.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie, trixie-backports
  • size: 58,264 kB
  • sloc: ansic: 817,393; sh: 315; makefile: 45; python: 26
file content (414 lines) | stat: -rw-r--r-- 31,056 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
/* Copyright (c) 2020 Evan Nemerson <evan@nemerson.com>
 *
 * Permission is hereby granted, free of charge, to any person
 * obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without
 * restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies
 * of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be
 * included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
 * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
 * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

#define SIMDE_TESTS_CURRENT_ISAX f16c
#include <simde/x86/f16c.h>
#include <test/x86/test-avx.h>

static int
test_simde_mm_cvtps_ph (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[4];
    const int16_t r[8];
    //const int16_t r0[8];
    //const int16_t r1[8];
    //const int16_t r2[8];
    //const int16_t r3[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -922.45), SIMDE_FLOAT32_C(  -417.52), SIMDE_FLOAT32_C(   576.56), SIMDE_FLOAT32_C(   -16.40) },
      { -INT16_C(  7371), -INT16_C(  8570),  INT16_C( 24705), -INT16_C( 13286),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(  -847.35), SIMDE_FLOAT32_C(  -868.69), SIMDE_FLOAT32_C(   190.03), SIMDE_FLOAT32_C(  -263.75) },
      { -INT16_C(  7521), -INT16_C(  7479),  INT16_C( 23024), -INT16_C(  9185),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(   550.95), SIMDE_FLOAT32_C(   691.22), SIMDE_FLOAT32_C(   972.58), SIMDE_FLOAT32_C(   645.93) },
      {  INT16_C( 24654),  INT16_C( 24934),  INT16_C( 25497),  INT16_C( 24844),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(  -961.75), SIMDE_FLOAT32_C(   626.33), SIMDE_FLOAT32_C(   597.48), SIMDE_FLOAT32_C(   793.15) },
      { -INT16_C(  7292),  INT16_C( 24805),  INT16_C( 24747),  INT16_C( 25138),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(  -582.37), SIMDE_FLOAT32_C(  -225.09), SIMDE_FLOAT32_C(   -65.32), SIMDE_FLOAT32_C(   452.55) },
      { -INT16_C(  8051), -INT16_C(  9463), -INT16_C( 11243),  INT16_C( 24338),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(   125.78), SIMDE_FLOAT32_C(  -683.39), SIMDE_FLOAT32_C(  -348.27), SIMDE_FLOAT32_C(  -309.07) },
      {  INT16_C( 22492), -INT16_C(  7849), -INT16_C(  8847), -INT16_C(  9004),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(  -141.60), SIMDE_FLOAT32_C(   503.26), SIMDE_FLOAT32_C(  -451.69), SIMDE_FLOAT32_C(  -298.51) },
      { -INT16_C( 10131),  INT16_C( 24541), -INT16_C(  8433), -INT16_C(  9046),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(   899.79), SIMDE_FLOAT32_C(   611.12), SIMDE_FLOAT32_C(  -363.24), SIMDE_FLOAT32_C(   977.33) },
      {  INT16_C( 25352),  INT16_C( 24774), -INT16_C(  8787),  INT16_C( 25507),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },

    #if 0
    // simde_mm_cvtps_ph doesn't handle the rounding parameter at all
    { { SIMDE_FLOAT32_C(  9204.05), SIMDE_FLOAT32_C( 86132.80), SIMDE_FLOAT32_C( 37121.74), SIMDE_FLOAT32_C( 68581.13) },
      {  INT16_C( 28799),  INT16_C( 31744),  INT16_C( 30856),  INT16_C( 31744),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 28798),  INT16_C( 31743),  INT16_C( 30856),  INT16_C( 31743),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 28799),  INT16_C( 31744),  INT16_C( 30857),  INT16_C( 31744),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 28798),  INT16_C( 31743),  INT16_C( 30856),  INT16_C( 31743),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C( 74896.25), SIMDE_FLOAT32_C(-56204.26), SIMDE_FLOAT32_C( -7440.56), SIMDE_FLOAT32_C(-88439.16) },
      {  INT16_C( 31744), -INT16_C(  1316), -INT16_C(  4284), -INT16_C(  1024),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 31743), -INT16_C(  1315), -INT16_C(  4283), -INT16_C(  1024),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 31744), -INT16_C(  1316), -INT16_C(  4284), -INT16_C(  1025),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 31743), -INT16_C(  1316), -INT16_C(  4284), -INT16_C(  1025),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(  1299.55), SIMDE_FLOAT32_C( 86370.34), SIMDE_FLOAT32_C( 59262.21), SIMDE_FLOAT32_C(-12225.60) },
      {  INT16_C( 25876),  INT16_C( 31744),  INT16_C( 31548), -INT16_C(  3592),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 25875),  INT16_C( 31743),  INT16_C( 31547), -INT16_C(  3591),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 25876),  INT16_C( 31744),  INT16_C( 31548), -INT16_C(  3592),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 25875),  INT16_C( 31743),  INT16_C( 31547), -INT16_C(  3592),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C( 34338.03), SIMDE_FLOAT32_C( 79249.55), SIMDE_FLOAT32_C( 55280.25), SIMDE_FLOAT32_C(-62398.29) },
      {  INT16_C( 30769),  INT16_C( 31744),  INT16_C( 31424), -INT16_C(  1122),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 30769),  INT16_C( 31743),  INT16_C( 31423), -INT16_C(  1122),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 30770),  INT16_C( 31744),  INT16_C( 31424), -INT16_C(  1123),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 30769),  INT16_C( 31743),  INT16_C( 31423), -INT16_C(  1123),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C( 46704.88), SIMDE_FLOAT32_C(-69785.79), SIMDE_FLOAT32_C( 60111.00), SIMDE_FLOAT32_C(-19208.83) },
      {  INT16_C( 31156), -INT16_C(  1024),  INT16_C( 31574), -INT16_C(  2895),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 31155), -INT16_C(  1024),  INT16_C( 31574), -INT16_C(  2895),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 31156), -INT16_C(  1025),  INT16_C( 31575), -INT16_C(  2896),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      {  INT16_C( 31155), -INT16_C(  1025),  INT16_C( 31574), -INT16_C(  2896),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(-19389.39), SIMDE_FLOAT32_C( -9921.31), SIMDE_FLOAT32_C( 90650.84), SIMDE_FLOAT32_C( 44172.08) },
      { -INT16_C(  2884), -INT16_C(  3880),  INT16_C( 31744),  INT16_C( 31076),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  2884), -INT16_C(  3879),  INT16_C( 31743),  INT16_C( 31076),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  2885), -INT16_C(  3880),  INT16_C( 31744),  INT16_C( 31077),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  2885), -INT16_C(  3880),  INT16_C( 31743),  INT16_C( 31076),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(-99667.48), SIMDE_FLOAT32_C( 75527.14), SIMDE_FLOAT32_C( 97265.97), SIMDE_FLOAT32_C(-87748.09) },
      { -INT16_C(  1024),  INT16_C( 31744),  INT16_C( 31744), -INT16_C(  1024),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  1024),  INT16_C( 31743),  INT16_C( 31743), -INT16_C(  1024),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  1025),  INT16_C( 31744),  INT16_C( 31744), -INT16_C(  1025),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  1025),  INT16_C( 31743),  INT16_C( 31743), -INT16_C(  1025),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    { { SIMDE_FLOAT32_C(-35448.19), SIMDE_FLOAT32_C( 83651.46), SIMDE_FLOAT32_C( 18631.21), SIMDE_FLOAT32_C( 73755.86) },
      { -INT16_C(  1964),  INT16_C( 31744),  INT16_C( 29836),  INT16_C( 31744),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  1964),  INT16_C( 31743),  INT16_C( 29836),  INT16_C( 31743),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  1965),  INT16_C( 31744),  INT16_C( 29837),  INT16_C( 31744),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) },
      { -INT16_C(  1965),  INT16_C( 31743),  INT16_C( 29836),  INT16_C( 31743),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0),  INT16_C(     0) } },
    #endif
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128 a = simde_mm_loadu_ps(test_vec[i].a);
    simde__m128i r = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT);
    simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[i].r));

    //Use the below when the rounding is fixed
    //simde__m128i r0 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT);
    //simde_test_x86_assert_equal_i16x8(r0, simde_x_mm_loadu_epi16(test_vec[i].r0));
    //simde__m128i r1 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEG_INF);
    //simde_test_x86_assert_equal_i16x8(r1, simde_x_mm_loadu_epi16(test_vec[i].r1));
    //simde__m128i r2 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_POS_INF);
    //simde_test_x86_assert_equal_i16x8(r2, simde_x_mm_loadu_epi16(test_vec[i].r2));
    //simde__m128i r3 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_ZERO);
    //simde_test_x86_assert_equal_i16x8(r3, simde_x_mm_loadu_epi16(test_vec[i].r3));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128 a = simde_test_x86_random_f32x4(-100000.0000f, 100000.0000f);
    simde__m128i r0 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT);
    simde__m128i r1 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEG_INF);
    simde__m128i r2 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_POS_INF);
    simde__m128i r3 = simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_ZERO);

    simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_i16x8(2, r0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i16x8(2, r1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i16x8(2, r2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i16x8(2, r3, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_cvtph_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const uint16_t a[8];
    const simde_float32 r[4];
  } test_vec[] = {
    { { UINT16_C(57665), UINT16_C(57418), UINT16_C(25491), UINT16_C(23593), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(  -672.50), SIMDE_FLOAT32_C(  -549.00), SIMDE_FLOAT32_C(   969.50), SIMDE_FLOAT32_C(   266.25) } },
    { { UINT16_C(24529), UINT16_C(25120), UINT16_C(57577), UINT16_C(55544), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(   500.25), SIMDE_FLOAT32_C(   784.00), SIMDE_FLOAT32_C(  -628.50), SIMDE_FLOAT32_C(  -159.00) } },
    { { UINT16_C(56338), UINT16_C(24788), UINT16_C(58146), UINT16_C(25256), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(  -260.50), SIMDE_FLOAT32_C(   618.00), SIMDE_FLOAT32_C(  -913.00), SIMDE_FLOAT32_C(   852.00) } },
    { { UINT16_C(25457), UINT16_C(24637), UINT16_C(23890), UINT16_C(56982), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(   952.50), SIMDE_FLOAT32_C(   542.50), SIMDE_FLOAT32_C(   340.50), SIMDE_FLOAT32_C(  -421.50) } },
    { { UINT16_C(22950), UINT16_C(21640), UINT16_C(54779), UINT16_C(22774), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(   180.75), SIMDE_FLOAT32_C(    72.50), SIMDE_FLOAT32_C(   -95.69), SIMDE_FLOAT32_C(   158.75) } },
    { { UINT16_C(24293), UINT16_C(55275), UINT16_C(56350), UINT16_C(24325), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(   441.25), SIMDE_FLOAT32_C(  -126.69), SIMDE_FLOAT32_C(  -263.50), SIMDE_FLOAT32_C(   449.25) } },
    { { UINT16_C(22402), UINT16_C(24502), UINT16_C(57033), UINT16_C(56678), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(   120.12), SIMDE_FLOAT32_C(   493.50), SIMDE_FLOAT32_C(  -434.25), SIMDE_FLOAT32_C(  -345.50) } },
    { { UINT16_C(57623), UINT16_C(22385), UINT16_C(56989), UINT16_C(56592), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0), UINT16_C(    0) },
      { SIMDE_FLOAT32_C(  -651.50), SIMDE_FLOAT32_C(   119.06), SIMDE_FLOAT32_C(  -423.25), SIMDE_FLOAT32_C(  -324.00) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128i a = simde_x_mm_loadu_epi16(test_vec[i].a);
    simde__m128 r = simde_mm_cvtph_ps(a);
    simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128i a = simde_mm_cvtps_ph(simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), SIMDE_MM_FROUND_NO_EXC);
    simde__m128 r = simde_mm_cvtph_ps(a);

    simde_test_x86_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm_f16c_round_trip (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[4];
    const simde_float32 r[4];
  } test_vec[] = {
    #if !defined(SIMDE_FAST_NANS)
    { {            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -423.73),            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   160.78) },
      {            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -423.73),            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(   160.78) } },
    #endif
    { { SIMDE_FLOAT32_C(  -981.67), SIMDE_FLOAT32_C(   318.53), SIMDE_FLOAT32_C(  -890.10), SIMDE_FLOAT32_C(   443.08) },
      { SIMDE_FLOAT32_C(  -981.67), SIMDE_FLOAT32_C(   318.53), SIMDE_FLOAT32_C(  -890.10), SIMDE_FLOAT32_C(   443.08) } },
    { { SIMDE_FLOAT32_C(  -316.07), SIMDE_FLOAT32_C(   436.20), SIMDE_FLOAT32_C(   506.18), SIMDE_FLOAT32_C(   324.31) },
      { SIMDE_FLOAT32_C(  -316.07), SIMDE_FLOAT32_C(   436.20), SIMDE_FLOAT32_C(   506.18), SIMDE_FLOAT32_C(   324.31) } },
    { { SIMDE_FLOAT32_C(  -232.13), SIMDE_FLOAT32_C(   547.61), SIMDE_FLOAT32_C(   521.27), SIMDE_FLOAT32_C(  -153.90) },
      { SIMDE_FLOAT32_C(  -232.13), SIMDE_FLOAT32_C(   547.61), SIMDE_FLOAT32_C(   521.27), SIMDE_FLOAT32_C(  -153.90) } },
    { { SIMDE_FLOAT32_C(   819.91), SIMDE_FLOAT32_C(   215.00), SIMDE_FLOAT32_C(   715.88), SIMDE_FLOAT32_C(   525.54) },
      { SIMDE_FLOAT32_C(   819.91), SIMDE_FLOAT32_C(   215.00), SIMDE_FLOAT32_C(   715.88), SIMDE_FLOAT32_C(   525.54) } },
    { { SIMDE_FLOAT32_C(  -199.45), SIMDE_FLOAT32_C(  -914.59), SIMDE_FLOAT32_C(  -600.24), SIMDE_FLOAT32_C(  -579.28) },
      { SIMDE_FLOAT32_C(  -199.45), SIMDE_FLOAT32_C(  -914.59), SIMDE_FLOAT32_C(  -600.24), SIMDE_FLOAT32_C(  -579.28) } },
    { { SIMDE_FLOAT32_C(   950.34), SIMDE_FLOAT32_C(   142.00), SIMDE_FLOAT32_C(  -931.01), SIMDE_FLOAT32_C(   915.71) },
      { SIMDE_FLOAT32_C(   950.34), SIMDE_FLOAT32_C(   142.00), SIMDE_FLOAT32_C(  -931.01), SIMDE_FLOAT32_C(   915.71) } },
    { { SIMDE_FLOAT32_C(  -390.34), SIMDE_FLOAT32_C(   580.78), SIMDE_FLOAT32_C(  -866.48), SIMDE_FLOAT32_C(  -588.08) },
      { SIMDE_FLOAT32_C(  -390.34), SIMDE_FLOAT32_C(   580.78), SIMDE_FLOAT32_C(  -866.48), SIMDE_FLOAT32_C(  -588.08) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128 a = simde_mm_loadu_ps(test_vec[i].a);
    simde__m128 r = simde_mm_cvtph_ps(simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT));
    simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 0);
  }

  return 0;
#else
  fputc('\n', stdout);
  simde_float32 values[8 * 2 * sizeof(simde__m128)];
  simde_test_x86_random_f32x4_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN);

  for (size_t i = 0 ; i < 8 ; i++) {
    simde__m128 a = simde_test_x86_random_extract_f32x4(i, 2, 0, values);
    simde__m128 r = a; // simde_mm_cvtph_ps(simde_mm_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT));

    simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm256_cvtps_ph (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde_float32 a[8];
    const int16_t r[8];
  } test_vec[] = {
    { { SIMDE_FLOAT32_C(  -266.25), SIMDE_FLOAT32_C(  -994.56), SIMDE_FLOAT32_C(  -351.71), SIMDE_FLOAT32_C(   290.36),
        SIMDE_FLOAT32_C(  -637.78), SIMDE_FLOAT32_C(   495.06), SIMDE_FLOAT32_C(  -635.46), SIMDE_FLOAT32_C(  -352.22) },
      { -INT16_C(  9175), -INT16_C(  7227), -INT16_C(  8833),  INT16_C( 23689), -INT16_C(  7940),  INT16_C( 24508), -INT16_C(  7945), -INT16_C(  8831) } },
    { { SIMDE_FLOAT32_C(  -832.50), SIMDE_FLOAT32_C(   748.25), SIMDE_FLOAT32_C(  -953.26), SIMDE_FLOAT32_C(  -335.37),
        SIMDE_FLOAT32_C(   855.42), SIMDE_FLOAT32_C(  -551.65), SIMDE_FLOAT32_C(   369.44), SIMDE_FLOAT32_C(   315.27) },
      { -INT16_C(  7551),  INT16_C( 25048), -INT16_C(  7309), -INT16_C(  8899),  INT16_C( 25263), -INT16_C(  8113),  INT16_C( 24006),  INT16_C( 23789) } },
    { { SIMDE_FLOAT32_C(  -690.18), SIMDE_FLOAT32_C(   370.38), SIMDE_FLOAT32_C(   -92.70), SIMDE_FLOAT32_C(   797.51),
        SIMDE_FLOAT32_C(   286.45), SIMDE_FLOAT32_C(   853.41), SIMDE_FLOAT32_C(  -941.28), SIMDE_FLOAT32_C(   941.87) },
      { -INT16_C(  7836),  INT16_C( 24010), -INT16_C( 10805),  INT16_C( 25147),  INT16_C( 23674),  INT16_C( 25259), -INT16_C(  7333),  INT16_C( 25436) } },
    { { SIMDE_FLOAT32_C(   873.16), SIMDE_FLOAT32_C(   513.64), SIMDE_FLOAT32_C(   399.26), SIMDE_FLOAT32_C(  -985.07),
        SIMDE_FLOAT32_C(   503.49), SIMDE_FLOAT32_C(  -978.18), SIMDE_FLOAT32_C(  -844.37), SIMDE_FLOAT32_C(  -762.76) },
      {  INT16_C( 25298),  INT16_C( 24579),  INT16_C( 24125), -INT16_C(  7246),  INT16_C( 24542), -INT16_C(  7260), -INT16_C(  7527), -INT16_C(  7690) } },
    { { SIMDE_FLOAT32_C(  -972.74), SIMDE_FLOAT32_C(  -196.09), SIMDE_FLOAT32_C(   527.61), SIMDE_FLOAT32_C(  -610.53),
        SIMDE_FLOAT32_C(  -701.03), SIMDE_FLOAT32_C(   892.15), SIMDE_FLOAT32_C(    37.25), SIMDE_FLOAT32_C(  -533.53) },
      { -INT16_C(  7271), -INT16_C(  9695),  INT16_C( 24607), -INT16_C(  7995), -INT16_C(  7814),  INT16_C( 25336),  INT16_C( 20648), -INT16_C(  8149) } },
    { { SIMDE_FLOAT32_C(   640.40), SIMDE_FLOAT32_C(    83.99), SIMDE_FLOAT32_C(   131.10), SIMDE_FLOAT32_C(   495.82),
        SIMDE_FLOAT32_C(   532.34), SIMDE_FLOAT32_C(  -499.46), SIMDE_FLOAT32_C(  -188.91), SIMDE_FLOAT32_C(   842.16) },
      {  INT16_C( 24833),  INT16_C( 21824),  INT16_C( 22553),  INT16_C( 24511),  INT16_C( 24617), -INT16_C(  8242), -INT16_C(  9753),  INT16_C( 25236) } },
    { { SIMDE_FLOAT32_C(   870.92), SIMDE_FLOAT32_C(   718.39), SIMDE_FLOAT32_C(   639.67), SIMDE_FLOAT32_C(   157.37),
        SIMDE_FLOAT32_C(   571.81), SIMDE_FLOAT32_C(   698.39), SIMDE_FLOAT32_C(    99.25), SIMDE_FLOAT32_C(   444.96) },
      {  INT16_C( 25294),  INT16_C( 24989),  INT16_C( 24831),  INT16_C( 22763),  INT16_C( 24696),  INT16_C( 24949),  INT16_C( 22068),  INT16_C( 24308) } },
    { { SIMDE_FLOAT32_C(   212.02), SIMDE_FLOAT32_C(  -501.49), SIMDE_FLOAT32_C(   459.89), SIMDE_FLOAT32_C(  -284.49),
        SIMDE_FLOAT32_C(  -479.67), SIMDE_FLOAT32_C(   615.52), SIMDE_FLOAT32_C(   -47.25), SIMDE_FLOAT32_C(  -452.42) },
      {  INT16_C( 23200), -INT16_C(  8234),  INT16_C( 24368), -INT16_C(  9102), -INT16_C(  8321),  INT16_C( 24783), -INT16_C( 11800), -INT16_C(  8430) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
    simde__m128i r = simde_mm256_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT);
    simde_test_x86_assert_equal_i16x8(r, simde_x_mm_loadu_epi16(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m256 a = simde_test_x86_random_f32x8(-1000.0f, 1000.0f);
    simde__m128i r = simde_mm256_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT);

    simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_i16x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm256_cvtph_ps (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const uint16_t a[8];
    const simde_float32 r[8];
  } test_vec[] = {
      { { UINT16_C(57990), UINT16_C(54973), UINT16_C(57953), UINT16_C(57620), UINT16_C(56879), UINT16_C(24954), UINT16_C(22493), UINT16_C(23782) },
        { SIMDE_FLOAT32_C(  -835.00), SIMDE_FLOAT32_C(  -107.81), SIMDE_FLOAT32_C(  -816.50), SIMDE_FLOAT32_C(  -650.00),
          SIMDE_FLOAT32_C(  -395.75), SIMDE_FLOAT32_C(   701.00), SIMDE_FLOAT32_C(   125.81), SIMDE_FLOAT32_C(   313.50) } },
      { { UINT16_C(57584), UINT16_C(55980), UINT16_C(25240), UINT16_C(56663), UINT16_C(22603), UINT16_C(58177), UINT16_C(25022), UINT16_C(25135) },
        { SIMDE_FLOAT32_C(  -632.00), SIMDE_FLOAT32_C(  -213.50), SIMDE_FLOAT32_C(   844.00), SIMDE_FLOAT32_C(  -341.75),
          SIMDE_FLOAT32_C(   137.38), SIMDE_FLOAT32_C(  -928.50), SIMDE_FLOAT32_C(   735.00), SIMDE_FLOAT32_C(   791.50) } },
      { { UINT16_C(23799), UINT16_C(58131), UINT16_C(56002), UINT16_C(56914), UINT16_C(58108), UINT16_C(21095), UINT16_C(57559), UINT16_C(57517) },
        { SIMDE_FLOAT32_C(   317.75), SIMDE_FLOAT32_C(  -905.50), SIMDE_FLOAT32_C(  -216.25), SIMDE_FLOAT32_C(  -404.50),
          SIMDE_FLOAT32_C(  -894.00), SIMDE_FLOAT32_C(    51.22), SIMDE_FLOAT32_C(  -619.50), SIMDE_FLOAT32_C(  -598.50) } },
      { { UINT16_C(23890), UINT16_C(24728), UINT16_C(54649), UINT16_C(57838), UINT16_C(57887), UINT16_C(24135), UINT16_C(57569), UINT16_C(57557) },
        { SIMDE_FLOAT32_C(   340.50), SIMDE_FLOAT32_C(   588.00), SIMDE_FLOAT32_C(   -87.56), SIMDE_FLOAT32_C(  -759.00),
          SIMDE_FLOAT32_C(  -783.50), SIMDE_FLOAT32_C(   401.75), SIMDE_FLOAT32_C(  -624.50), SIMDE_FLOAT32_C(  -618.50) } },
      { { UINT16_C(57732), UINT16_C(57060), UINT16_C(56369), UINT16_C(54878), UINT16_C(57800), UINT16_C(25267), UINT16_C(57897), UINT16_C(56785) },
        { SIMDE_FLOAT32_C(  -706.00), SIMDE_FLOAT32_C(  -441.00), SIMDE_FLOAT32_C(  -268.25), SIMDE_FLOAT32_C(  -101.88),
          SIMDE_FLOAT32_C(  -740.00), SIMDE_FLOAT32_C(   857.50), SIMDE_FLOAT32_C(  -788.50), SIMDE_FLOAT32_C(  -372.25) } },
      { { UINT16_C(56720), UINT16_C(58209), UINT16_C(23672), UINT16_C(25115), UINT16_C(58065), UINT16_C(19770), UINT16_C(24698), UINT16_C(24308) },
        { SIMDE_FLOAT32_C(  -356.00), SIMDE_FLOAT32_C(  -944.50), SIMDE_FLOAT32_C(   286.00), SIMDE_FLOAT32_C(   781.50),
          SIMDE_FLOAT32_C(  -872.50), SIMDE_FLOAT32_C(    20.91), SIMDE_FLOAT32_C(   573.00), SIMDE_FLOAT32_C(   445.00) } },
      { { UINT16_C(22324), UINT16_C(57607), UINT16_C(58239), UINT16_C(23275), UINT16_C(24160), UINT16_C(57478), UINT16_C(24797), UINT16_C(56285) },
        { SIMDE_FLOAT32_C(   115.25), SIMDE_FLOAT32_C(  -643.50), SIMDE_FLOAT32_C(  -959.50), SIMDE_FLOAT32_C(   221.38),
          SIMDE_FLOAT32_C(   408.00), SIMDE_FLOAT32_C(  -579.00), SIMDE_FLOAT32_C(   622.50), SIMDE_FLOAT32_C(  -251.62) } },
      { { UINT16_C(58301), UINT16_C(57156), UINT16_C(51507), UINT16_C(57868), UINT16_C(25426), UINT16_C(23988), UINT16_C(56866), UINT16_C(57859) },
        { SIMDE_FLOAT32_C(  -990.50), SIMDE_FLOAT32_C(  -465.00), SIMDE_FLOAT32_C(   -10.40), SIMDE_FLOAT32_C(  -774.00),
          SIMDE_FLOAT32_C(   937.00), SIMDE_FLOAT32_C(   365.00), SIMDE_FLOAT32_C(  -392.50), SIMDE_FLOAT32_C(  -769.50) } }
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m128i a = simde_mm_loadu_epi16(test_vec[i].a);
    simde__m256 r = simde_mm256_cvtph_ps(a);
    simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1);
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m128i a = simde_mm256_cvtps_ph(simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)), SIMDE_MM_FROUND_NO_EXC);
    simde__m256 r = simde_mm256_cvtph_ps(a);

    simde_test_x86_write_u16x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm256_f16c_round_trip (SIMDE_MUNIT_TEST_ARGS) {
  #if 1
    static const struct {
      const simde_float32 a[8];
      const simde_float32 r[8];
    } test_vec[] = {
      #if !defined(SIMDE_FAST_NANS)
    { {            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -474.87),            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -588.08),
        SIMDE_FLOAT32_C(   450.80), SIMDE_FLOAT32_C(   475.77), SIMDE_FLOAT32_C(   919.35), SIMDE_FLOAT32_C(   544.67) },
      {            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -474.87),            SIMDE_MATH_NANF, SIMDE_FLOAT32_C(  -588.08),
        SIMDE_FLOAT32_C(   450.80), SIMDE_FLOAT32_C(   475.77), SIMDE_FLOAT32_C(   919.35), SIMDE_FLOAT32_C(   544.67) } },
      #endif
    { { SIMDE_FLOAT32_C(  -372.84), SIMDE_FLOAT32_C(  -960.44), SIMDE_FLOAT32_C(   -69.78), SIMDE_FLOAT32_C(  -757.33),
        SIMDE_FLOAT32_C(   645.16), SIMDE_FLOAT32_C(   893.71), SIMDE_FLOAT32_C(   672.61), SIMDE_FLOAT32_C(  -845.50) },
      { SIMDE_FLOAT32_C(  -372.84), SIMDE_FLOAT32_C(  -960.44), SIMDE_FLOAT32_C(   -69.78), SIMDE_FLOAT32_C(  -757.33),
        SIMDE_FLOAT32_C(   645.16), SIMDE_FLOAT32_C(   893.71), SIMDE_FLOAT32_C(   672.61), SIMDE_FLOAT32_C(  -845.50) } },
    { { SIMDE_FLOAT32_C(  -863.46), SIMDE_FLOAT32_C(    81.15), SIMDE_FLOAT32_C(  -636.08), SIMDE_FLOAT32_C(   587.35),
        SIMDE_FLOAT32_C(  -443.08), SIMDE_FLOAT32_C(  -716.73), SIMDE_FLOAT32_C(   132.01), SIMDE_FLOAT32_C(   728.65) },
      { SIMDE_FLOAT32_C(  -863.46), SIMDE_FLOAT32_C(    81.15), SIMDE_FLOAT32_C(  -636.08), SIMDE_FLOAT32_C(   587.35),
        SIMDE_FLOAT32_C(  -443.08), SIMDE_FLOAT32_C(  -716.73), SIMDE_FLOAT32_C(   132.01), SIMDE_FLOAT32_C(   728.65) } },
    { { SIMDE_FLOAT32_C(   708.45), SIMDE_FLOAT32_C(  -619.18), SIMDE_FLOAT32_C(   477.33), SIMDE_FLOAT32_C(   353.61),
        SIMDE_FLOAT32_C(  -725.48), SIMDE_FLOAT32_C(   149.94), SIMDE_FLOAT32_C(   508.10), SIMDE_FLOAT32_C(   238.34) },
      { SIMDE_FLOAT32_C(   708.45), SIMDE_FLOAT32_C(  -619.18), SIMDE_FLOAT32_C(   477.33), SIMDE_FLOAT32_C(   353.61),
        SIMDE_FLOAT32_C(  -725.48), SIMDE_FLOAT32_C(   149.94), SIMDE_FLOAT32_C(   508.10), SIMDE_FLOAT32_C(   238.34) } },
    { { SIMDE_FLOAT32_C(   491.58), SIMDE_FLOAT32_C(  -199.94), SIMDE_FLOAT32_C(   616.91), SIMDE_FLOAT32_C(  -951.51),
        SIMDE_FLOAT32_C(    83.34), SIMDE_FLOAT32_C(  -251.08), SIMDE_FLOAT32_C(   777.15), SIMDE_FLOAT32_C(  -532.99) },
      { SIMDE_FLOAT32_C(   491.58), SIMDE_FLOAT32_C(  -199.94), SIMDE_FLOAT32_C(   616.91), SIMDE_FLOAT32_C(  -951.51),
        SIMDE_FLOAT32_C(    83.34), SIMDE_FLOAT32_C(  -251.08), SIMDE_FLOAT32_C(   777.15), SIMDE_FLOAT32_C(  -532.99) } },
    { { SIMDE_FLOAT32_C(  -504.03), SIMDE_FLOAT32_C(    48.55), SIMDE_FLOAT32_C(  -511.25), SIMDE_FLOAT32_C(  -229.50),
        SIMDE_FLOAT32_C(  -801.51), SIMDE_FLOAT32_C(   996.85), SIMDE_FLOAT32_C(  -991.16), SIMDE_FLOAT32_C(   -14.58) },
      { SIMDE_FLOAT32_C(  -504.03), SIMDE_FLOAT32_C(    48.55), SIMDE_FLOAT32_C(  -511.25), SIMDE_FLOAT32_C(  -229.50),
        SIMDE_FLOAT32_C(  -801.51), SIMDE_FLOAT32_C(   996.85), SIMDE_FLOAT32_C(  -991.16), SIMDE_FLOAT32_C(   -14.58) } },
    { { SIMDE_FLOAT32_C(  -294.23), SIMDE_FLOAT32_C(   817.94), SIMDE_FLOAT32_C(  -541.68), SIMDE_FLOAT32_C(   789.10),
        SIMDE_FLOAT32_C(  -433.13), SIMDE_FLOAT32_C(  -764.53), SIMDE_FLOAT32_C(  -743.88), SIMDE_FLOAT32_C(  -704.08) },
      { SIMDE_FLOAT32_C(  -294.23), SIMDE_FLOAT32_C(   817.94), SIMDE_FLOAT32_C(  -541.68), SIMDE_FLOAT32_C(   789.10),
        SIMDE_FLOAT32_C(  -433.13), SIMDE_FLOAT32_C(  -764.53), SIMDE_FLOAT32_C(  -743.88), SIMDE_FLOAT32_C(  -704.08) } },
    { { SIMDE_FLOAT32_C(   252.24), SIMDE_FLOAT32_C(    43.86), SIMDE_FLOAT32_C(  -697.71), SIMDE_FLOAT32_C(   450.73),
        SIMDE_FLOAT32_C(    40.71), SIMDE_FLOAT32_C(  -688.87), SIMDE_FLOAT32_C(  -563.85), SIMDE_FLOAT32_C(   319.17) },
      { SIMDE_FLOAT32_C(   252.24), SIMDE_FLOAT32_C(    43.86), SIMDE_FLOAT32_C(  -697.71), SIMDE_FLOAT32_C(   450.73),
        SIMDE_FLOAT32_C(    40.71), SIMDE_FLOAT32_C(  -688.87), SIMDE_FLOAT32_C(  -563.85), SIMDE_FLOAT32_C(   319.17) } }
    };

    for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
      simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a);
      simde__m256 r = simde_mm256_cvtph_ps(simde_mm256_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT));
      simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 0);
    }

    return 0;
  #else
    fputc('\n', stdout);
    simde_float32 values[8 * 2 * sizeof(simde__m256)];
    simde_test_x86_random_f32x8_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN);

    for (size_t i = 0 ; i < 8 ; i++) {
      simde__m256 a = simde_test_x86_random_extract_f32x8(i, 2, 0, values);
      simde__m256 r = a; // simde_mm256_cvtph_ps(simde_mm256_cvtps_ph(a, SIMDE_MM_FROUND_TO_NEAREST_INT));

      simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST);
      simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST);
    }
    return 1;
  #endif
}

SIMDE_TEST_FUNC_LIST_BEGIN
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_cvtps_ph)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_cvtph_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm_f16c_round_trip)

  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtps_ph)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_cvtph_ps)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm256_f16c_round_trip)
SIMDE_TEST_FUNC_LIST_END

#include <test/x86/test-x86-footer.h>