1 /* SPDX-License-Identifier: MIT
2  *
3  * Permission is hereby granted, free of charge, to any person
4  * obtaining a copy of this software and associated documentation
5  * files (the "Software"), to deal in the Software without
6  * restriction, including without limitation the rights to use, copy,
7  * modify, merge, publish, distribute, sublicense, and/or sell copies
8  * of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be
12  * included in all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
18  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
19  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21  * SOFTWARE.
22  *
23  * Copyright:
24  *   2020      Evan Nemerson <evan@nemerson.com>
25  *   2020      Christopher Moore <moore@free.fr>
26  */
27 
28 #define SIMDE_TEST_X86_AVX512_INSN insert
29 
30 #include <test/x86/avx512/test-avx512.h>
31 #include <simde/x86/avx512/set.h>
32 #include <simde/x86/avx512/insert.h>
33 
34 static int
test_simde_mm512_insertf32x4(SIMDE_MUNIT_TEST_ARGS)35 test_simde_mm512_insertf32x4(SIMDE_MUNIT_TEST_ARGS) {
36   const struct {
37     simde__m512 a;
38     simde__m128 b;
39     simde__m512 r0;
40     simde__m512 r1;
41     simde__m512 r2;
42     simde__m512 r3;
43   } test_vec[8] = {
44     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -563.83), SIMDE_FLOAT32_C(   799.30), SIMDE_FLOAT32_C(   938.85), SIMDE_FLOAT32_C(  -576.01),
45                          SIMDE_FLOAT32_C(  -465.05), SIMDE_FLOAT32_C(   439.15), SIMDE_FLOAT32_C(  -104.57), SIMDE_FLOAT32_C(   -28.15),
46                          SIMDE_FLOAT32_C(  -431.26), SIMDE_FLOAT32_C(   481.25), SIMDE_FLOAT32_C(   -57.75), SIMDE_FLOAT32_C(  -784.26),
47                          SIMDE_FLOAT32_C(   438.04), SIMDE_FLOAT32_C(   549.03), SIMDE_FLOAT32_C(   729.46), SIMDE_FLOAT32_C(   582.53)),
48       simde_mm_set_ps(SIMDE_FLOAT32_C(  -202.49), SIMDE_FLOAT32_C(  -470.36), SIMDE_FLOAT32_C(   966.37), SIMDE_FLOAT32_C(   135.20)),
49       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -563.83), SIMDE_FLOAT32_C(   799.30), SIMDE_FLOAT32_C(   938.85), SIMDE_FLOAT32_C(  -576.01),
50                          SIMDE_FLOAT32_C(  -465.05), SIMDE_FLOAT32_C(   439.15), SIMDE_FLOAT32_C(  -104.57), SIMDE_FLOAT32_C(   -28.15),
51                          SIMDE_FLOAT32_C(  -431.26), SIMDE_FLOAT32_C(   481.25), SIMDE_FLOAT32_C(   -57.75), SIMDE_FLOAT32_C(  -784.26),
52                          SIMDE_FLOAT32_C(  -202.49), SIMDE_FLOAT32_C(  -470.36), SIMDE_FLOAT32_C(   966.37), SIMDE_FLOAT32_C(   135.20)),
53       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -563.83), SIMDE_FLOAT32_C(   799.30), SIMDE_FLOAT32_C(   938.85), SIMDE_FLOAT32_C(  -576.01),
54                          SIMDE_FLOAT32_C(  -465.05), SIMDE_FLOAT32_C(   439.15), SIMDE_FLOAT32_C(  -104.57), SIMDE_FLOAT32_C(   -28.15),
55                          SIMDE_FLOAT32_C(  -202.49), SIMDE_FLOAT32_C(  -470.36), SIMDE_FLOAT32_C(   966.37), SIMDE_FLOAT32_C(   135.20),
56                          SIMDE_FLOAT32_C(   438.04), SIMDE_FLOAT32_C(   549.03), SIMDE_FLOAT32_C(   729.46), SIMDE_FLOAT32_C(   582.53)),
57       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -563.83), SIMDE_FLOAT32_C(   799.30), SIMDE_FLOAT32_C(   938.85), SIMDE_FLOAT32_C(  -576.01),
58                          SIMDE_FLOAT32_C(  -202.49), SIMDE_FLOAT32_C(  -470.36), SIMDE_FLOAT32_C(   966.37), SIMDE_FLOAT32_C(   135.20),
59                          SIMDE_FLOAT32_C(  -431.26), SIMDE_FLOAT32_C(   481.25), SIMDE_FLOAT32_C(   -57.75), SIMDE_FLOAT32_C(  -784.26),
60                          SIMDE_FLOAT32_C(   438.04), SIMDE_FLOAT32_C(   549.03), SIMDE_FLOAT32_C(   729.46), SIMDE_FLOAT32_C(   582.53)),
61       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -202.49), SIMDE_FLOAT32_C(  -470.36), SIMDE_FLOAT32_C(   966.37), SIMDE_FLOAT32_C(   135.20),
62                          SIMDE_FLOAT32_C(  -465.05), SIMDE_FLOAT32_C(   439.15), SIMDE_FLOAT32_C(  -104.57), SIMDE_FLOAT32_C(   -28.15),
63                          SIMDE_FLOAT32_C(  -431.26), SIMDE_FLOAT32_C(   481.25), SIMDE_FLOAT32_C(   -57.75), SIMDE_FLOAT32_C(  -784.26),
64                          SIMDE_FLOAT32_C(   438.04), SIMDE_FLOAT32_C(   549.03), SIMDE_FLOAT32_C(   729.46), SIMDE_FLOAT32_C(   582.53)) },
65     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -743.10), SIMDE_FLOAT32_C(  -688.01), SIMDE_FLOAT32_C(   442.76), SIMDE_FLOAT32_C(   931.17),
66                          SIMDE_FLOAT32_C(   120.10), SIMDE_FLOAT32_C(   -64.06), SIMDE_FLOAT32_C(  -620.03), SIMDE_FLOAT32_C(   559.81),
67                          SIMDE_FLOAT32_C(   185.23), SIMDE_FLOAT32_C(  -423.61), SIMDE_FLOAT32_C(   -11.91), SIMDE_FLOAT32_C(   407.56),
68                          SIMDE_FLOAT32_C(   355.11), SIMDE_FLOAT32_C(  -787.72), SIMDE_FLOAT32_C(   472.82), SIMDE_FLOAT32_C(  -703.51)),
69       simde_mm_set_ps(SIMDE_FLOAT32_C(  -859.51), SIMDE_FLOAT32_C(   -69.45), SIMDE_FLOAT32_C(    40.36), SIMDE_FLOAT32_C(    95.61)),
70       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -743.10), SIMDE_FLOAT32_C(  -688.01), SIMDE_FLOAT32_C(   442.76), SIMDE_FLOAT32_C(   931.17),
71                          SIMDE_FLOAT32_C(   120.10), SIMDE_FLOAT32_C(   -64.06), SIMDE_FLOAT32_C(  -620.03), SIMDE_FLOAT32_C(   559.81),
72                          SIMDE_FLOAT32_C(   185.23), SIMDE_FLOAT32_C(  -423.61), SIMDE_FLOAT32_C(   -11.91), SIMDE_FLOAT32_C(   407.56),
73                          SIMDE_FLOAT32_C(  -859.51), SIMDE_FLOAT32_C(   -69.45), SIMDE_FLOAT32_C(    40.36), SIMDE_FLOAT32_C(    95.61)),
74       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -743.10), SIMDE_FLOAT32_C(  -688.01), SIMDE_FLOAT32_C(   442.76), SIMDE_FLOAT32_C(   931.17),
75                          SIMDE_FLOAT32_C(   120.10), SIMDE_FLOAT32_C(   -64.06), SIMDE_FLOAT32_C(  -620.03), SIMDE_FLOAT32_C(   559.81),
76                          SIMDE_FLOAT32_C(  -859.51), SIMDE_FLOAT32_C(   -69.45), SIMDE_FLOAT32_C(    40.36), SIMDE_FLOAT32_C(    95.61),
77                          SIMDE_FLOAT32_C(   355.11), SIMDE_FLOAT32_C(  -787.72), SIMDE_FLOAT32_C(   472.82), SIMDE_FLOAT32_C(  -703.51)),
78       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -743.10), SIMDE_FLOAT32_C(  -688.01), SIMDE_FLOAT32_C(   442.76), SIMDE_FLOAT32_C(   931.17),
79                          SIMDE_FLOAT32_C(  -859.51), SIMDE_FLOAT32_C(   -69.45), SIMDE_FLOAT32_C(    40.36), SIMDE_FLOAT32_C(    95.61),
80                          SIMDE_FLOAT32_C(   185.23), SIMDE_FLOAT32_C(  -423.61), SIMDE_FLOAT32_C(   -11.91), SIMDE_FLOAT32_C(   407.56),
81                          SIMDE_FLOAT32_C(   355.11), SIMDE_FLOAT32_C(  -787.72), SIMDE_FLOAT32_C(   472.82), SIMDE_FLOAT32_C(  -703.51)),
82       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -859.51), SIMDE_FLOAT32_C(   -69.45), SIMDE_FLOAT32_C(    40.36), SIMDE_FLOAT32_C(    95.61),
83                          SIMDE_FLOAT32_C(   120.10), SIMDE_FLOAT32_C(   -64.06), SIMDE_FLOAT32_C(  -620.03), SIMDE_FLOAT32_C(   559.81),
84                          SIMDE_FLOAT32_C(   185.23), SIMDE_FLOAT32_C(  -423.61), SIMDE_FLOAT32_C(   -11.91), SIMDE_FLOAT32_C(   407.56),
85                          SIMDE_FLOAT32_C(   355.11), SIMDE_FLOAT32_C(  -787.72), SIMDE_FLOAT32_C(   472.82), SIMDE_FLOAT32_C(  -703.51)) },
86     { simde_mm512_set_ps(SIMDE_FLOAT32_C(   -98.08), SIMDE_FLOAT32_C(   464.19), SIMDE_FLOAT32_C(   711.12), SIMDE_FLOAT32_C(   282.83),
87                          SIMDE_FLOAT32_C(  -774.08), SIMDE_FLOAT32_C(   841.24), SIMDE_FLOAT32_C(  -414.07), SIMDE_FLOAT32_C(    79.76),
88                          SIMDE_FLOAT32_C(   193.01), SIMDE_FLOAT32_C(  -435.27), SIMDE_FLOAT32_C(   -84.06), SIMDE_FLOAT32_C(   298.40),
89                          SIMDE_FLOAT32_C(   208.07), SIMDE_FLOAT32_C(   -94.60), SIMDE_FLOAT32_C(   834.28), SIMDE_FLOAT32_C(   260.50)),
90       simde_mm_set_ps(SIMDE_FLOAT32_C(  -157.33), SIMDE_FLOAT32_C(  -819.46), SIMDE_FLOAT32_C(   541.44), SIMDE_FLOAT32_C(   112.81)),
91       simde_mm512_set_ps(SIMDE_FLOAT32_C(   -98.08), SIMDE_FLOAT32_C(   464.19), SIMDE_FLOAT32_C(   711.12), SIMDE_FLOAT32_C(   282.83),
92                          SIMDE_FLOAT32_C(  -774.08), SIMDE_FLOAT32_C(   841.24), SIMDE_FLOAT32_C(  -414.07), SIMDE_FLOAT32_C(    79.76),
93                          SIMDE_FLOAT32_C(   193.01), SIMDE_FLOAT32_C(  -435.27), SIMDE_FLOAT32_C(   -84.06), SIMDE_FLOAT32_C(   298.40),
94                          SIMDE_FLOAT32_C(  -157.33), SIMDE_FLOAT32_C(  -819.46), SIMDE_FLOAT32_C(   541.44), SIMDE_FLOAT32_C(   112.81)),
95       simde_mm512_set_ps(SIMDE_FLOAT32_C(   -98.08), SIMDE_FLOAT32_C(   464.19), SIMDE_FLOAT32_C(   711.12), SIMDE_FLOAT32_C(   282.83),
96                          SIMDE_FLOAT32_C(  -774.08), SIMDE_FLOAT32_C(   841.24), SIMDE_FLOAT32_C(  -414.07), SIMDE_FLOAT32_C(    79.76),
97                          SIMDE_FLOAT32_C(  -157.33), SIMDE_FLOAT32_C(  -819.46), SIMDE_FLOAT32_C(   541.44), SIMDE_FLOAT32_C(   112.81),
98                          SIMDE_FLOAT32_C(   208.07), SIMDE_FLOAT32_C(   -94.60), SIMDE_FLOAT32_C(   834.28), SIMDE_FLOAT32_C(   260.50)),
99       simde_mm512_set_ps(SIMDE_FLOAT32_C(   -98.08), SIMDE_FLOAT32_C(   464.19), SIMDE_FLOAT32_C(   711.12), SIMDE_FLOAT32_C(   282.83),
100                          SIMDE_FLOAT32_C(  -157.33), SIMDE_FLOAT32_C(  -819.46), SIMDE_FLOAT32_C(   541.44), SIMDE_FLOAT32_C(   112.81),
101                          SIMDE_FLOAT32_C(   193.01), SIMDE_FLOAT32_C(  -435.27), SIMDE_FLOAT32_C(   -84.06), SIMDE_FLOAT32_C(   298.40),
102                          SIMDE_FLOAT32_C(   208.07), SIMDE_FLOAT32_C(   -94.60), SIMDE_FLOAT32_C(   834.28), SIMDE_FLOAT32_C(   260.50)),
103       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -157.33), SIMDE_FLOAT32_C(  -819.46), SIMDE_FLOAT32_C(   541.44), SIMDE_FLOAT32_C(   112.81),
104                          SIMDE_FLOAT32_C(  -774.08), SIMDE_FLOAT32_C(   841.24), SIMDE_FLOAT32_C(  -414.07), SIMDE_FLOAT32_C(    79.76),
105                          SIMDE_FLOAT32_C(   193.01), SIMDE_FLOAT32_C(  -435.27), SIMDE_FLOAT32_C(   -84.06), SIMDE_FLOAT32_C(   298.40),
106                          SIMDE_FLOAT32_C(   208.07), SIMDE_FLOAT32_C(   -94.60), SIMDE_FLOAT32_C(   834.28), SIMDE_FLOAT32_C(   260.50)) },
107     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -887.47), SIMDE_FLOAT32_C(   336.35), SIMDE_FLOAT32_C(  -396.24), SIMDE_FLOAT32_C(    99.21),
108                          SIMDE_FLOAT32_C(    -2.60), SIMDE_FLOAT32_C(   -38.88), SIMDE_FLOAT32_C(   165.88), SIMDE_FLOAT32_C(   218.73),
109                          SIMDE_FLOAT32_C(   375.27), SIMDE_FLOAT32_C(  -966.90), SIMDE_FLOAT32_C(  -512.98), SIMDE_FLOAT32_C(  -737.78),
110                          SIMDE_FLOAT32_C(   664.52), SIMDE_FLOAT32_C(  -224.13), SIMDE_FLOAT32_C(   633.65), SIMDE_FLOAT32_C(  -834.15)),
111       simde_mm_set_ps(SIMDE_FLOAT32_C(   141.08), SIMDE_FLOAT32_C(  -832.50), SIMDE_FLOAT32_C(  -990.15), SIMDE_FLOAT32_C(   438.46)),
112       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -887.47), SIMDE_FLOAT32_C(   336.35), SIMDE_FLOAT32_C(  -396.24), SIMDE_FLOAT32_C(    99.21),
113                          SIMDE_FLOAT32_C(    -2.60), SIMDE_FLOAT32_C(   -38.88), SIMDE_FLOAT32_C(   165.88), SIMDE_FLOAT32_C(   218.73),
114                          SIMDE_FLOAT32_C(   375.27), SIMDE_FLOAT32_C(  -966.90), SIMDE_FLOAT32_C(  -512.98), SIMDE_FLOAT32_C(  -737.78),
115                          SIMDE_FLOAT32_C(   141.08), SIMDE_FLOAT32_C(  -832.50), SIMDE_FLOAT32_C(  -990.15), SIMDE_FLOAT32_C(   438.46)),
116       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -887.47), SIMDE_FLOAT32_C(   336.35), SIMDE_FLOAT32_C(  -396.24), SIMDE_FLOAT32_C(    99.21),
117                          SIMDE_FLOAT32_C(    -2.60), SIMDE_FLOAT32_C(   -38.88), SIMDE_FLOAT32_C(   165.88), SIMDE_FLOAT32_C(   218.73),
118                          SIMDE_FLOAT32_C(   141.08), SIMDE_FLOAT32_C(  -832.50), SIMDE_FLOAT32_C(  -990.15), SIMDE_FLOAT32_C(   438.46),
119                          SIMDE_FLOAT32_C(   664.52), SIMDE_FLOAT32_C(  -224.13), SIMDE_FLOAT32_C(   633.65), SIMDE_FLOAT32_C(  -834.15)),
120       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -887.47), SIMDE_FLOAT32_C(   336.35), SIMDE_FLOAT32_C(  -396.24), SIMDE_FLOAT32_C(    99.21),
121                          SIMDE_FLOAT32_C(   141.08), SIMDE_FLOAT32_C(  -832.50), SIMDE_FLOAT32_C(  -990.15), SIMDE_FLOAT32_C(   438.46),
122                          SIMDE_FLOAT32_C(   375.27), SIMDE_FLOAT32_C(  -966.90), SIMDE_FLOAT32_C(  -512.98), SIMDE_FLOAT32_C(  -737.78),
123                          SIMDE_FLOAT32_C(   664.52), SIMDE_FLOAT32_C(  -224.13), SIMDE_FLOAT32_C(   633.65), SIMDE_FLOAT32_C(  -834.15)),
124       simde_mm512_set_ps(SIMDE_FLOAT32_C(   141.08), SIMDE_FLOAT32_C(  -832.50), SIMDE_FLOAT32_C(  -990.15), SIMDE_FLOAT32_C(   438.46),
125                          SIMDE_FLOAT32_C(    -2.60), SIMDE_FLOAT32_C(   -38.88), SIMDE_FLOAT32_C(   165.88), SIMDE_FLOAT32_C(   218.73),
126                          SIMDE_FLOAT32_C(   375.27), SIMDE_FLOAT32_C(  -966.90), SIMDE_FLOAT32_C(  -512.98), SIMDE_FLOAT32_C(  -737.78),
127                          SIMDE_FLOAT32_C(   664.52), SIMDE_FLOAT32_C(  -224.13), SIMDE_FLOAT32_C(   633.65), SIMDE_FLOAT32_C(  -834.15)) },
128     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -179.98), SIMDE_FLOAT32_C(   258.23), SIMDE_FLOAT32_C(   246.22), SIMDE_FLOAT32_C(    97.85),
129                          SIMDE_FLOAT32_C(   666.32), SIMDE_FLOAT32_C(   364.80), SIMDE_FLOAT32_C(   759.27), SIMDE_FLOAT32_C(  -524.19),
130                          SIMDE_FLOAT32_C(  -726.51), SIMDE_FLOAT32_C(   381.71), SIMDE_FLOAT32_C(   819.12), SIMDE_FLOAT32_C(   145.28),
131                          SIMDE_FLOAT32_C(   -99.37), SIMDE_FLOAT32_C(  -151.02), SIMDE_FLOAT32_C(   551.65), SIMDE_FLOAT32_C(   155.58)),
132       simde_mm_set_ps(SIMDE_FLOAT32_C(   184.91), SIMDE_FLOAT32_C(  -432.97), SIMDE_FLOAT32_C(  -455.33), SIMDE_FLOAT32_C(   164.52)),
133       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -179.98), SIMDE_FLOAT32_C(   258.23), SIMDE_FLOAT32_C(   246.22), SIMDE_FLOAT32_C(    97.85),
134                          SIMDE_FLOAT32_C(   666.32), SIMDE_FLOAT32_C(   364.80), SIMDE_FLOAT32_C(   759.27), SIMDE_FLOAT32_C(  -524.19),
135                          SIMDE_FLOAT32_C(  -726.51), SIMDE_FLOAT32_C(   381.71), SIMDE_FLOAT32_C(   819.12), SIMDE_FLOAT32_C(   145.28),
136                          SIMDE_FLOAT32_C(   184.91), SIMDE_FLOAT32_C(  -432.97), SIMDE_FLOAT32_C(  -455.33), SIMDE_FLOAT32_C(   164.52)),
137       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -179.98), SIMDE_FLOAT32_C(   258.23), SIMDE_FLOAT32_C(   246.22), SIMDE_FLOAT32_C(    97.85),
138                          SIMDE_FLOAT32_C(   666.32), SIMDE_FLOAT32_C(   364.80), SIMDE_FLOAT32_C(   759.27), SIMDE_FLOAT32_C(  -524.19),
139                          SIMDE_FLOAT32_C(   184.91), SIMDE_FLOAT32_C(  -432.97), SIMDE_FLOAT32_C(  -455.33), SIMDE_FLOAT32_C(   164.52),
140                          SIMDE_FLOAT32_C(   -99.37), SIMDE_FLOAT32_C(  -151.02), SIMDE_FLOAT32_C(   551.65), SIMDE_FLOAT32_C(   155.58)),
141       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -179.98), SIMDE_FLOAT32_C(   258.23), SIMDE_FLOAT32_C(   246.22), SIMDE_FLOAT32_C(    97.85),
142                          SIMDE_FLOAT32_C(   184.91), SIMDE_FLOAT32_C(  -432.97), SIMDE_FLOAT32_C(  -455.33), SIMDE_FLOAT32_C(   164.52),
143                          SIMDE_FLOAT32_C(  -726.51), SIMDE_FLOAT32_C(   381.71), SIMDE_FLOAT32_C(   819.12), SIMDE_FLOAT32_C(   145.28),
144                          SIMDE_FLOAT32_C(   -99.37), SIMDE_FLOAT32_C(  -151.02), SIMDE_FLOAT32_C(   551.65), SIMDE_FLOAT32_C(   155.58)),
145       simde_mm512_set_ps(SIMDE_FLOAT32_C(   184.91), SIMDE_FLOAT32_C(  -432.97), SIMDE_FLOAT32_C(  -455.33), SIMDE_FLOAT32_C(   164.52),
146                          SIMDE_FLOAT32_C(   666.32), SIMDE_FLOAT32_C(   364.80), SIMDE_FLOAT32_C(   759.27), SIMDE_FLOAT32_C(  -524.19),
147                          SIMDE_FLOAT32_C(  -726.51), SIMDE_FLOAT32_C(   381.71), SIMDE_FLOAT32_C(   819.12), SIMDE_FLOAT32_C(   145.28),
148                          SIMDE_FLOAT32_C(   -99.37), SIMDE_FLOAT32_C(  -151.02), SIMDE_FLOAT32_C(   551.65), SIMDE_FLOAT32_C(   155.58)) },
149     { simde_mm512_set_ps(SIMDE_FLOAT32_C(   481.68), SIMDE_FLOAT32_C(   170.00), SIMDE_FLOAT32_C(  -341.91), SIMDE_FLOAT32_C(   366.57),
150                          SIMDE_FLOAT32_C(   254.48), SIMDE_FLOAT32_C(  -211.73), SIMDE_FLOAT32_C(   755.70), SIMDE_FLOAT32_C(   908.31),
151                          SIMDE_FLOAT32_C(  -363.93), SIMDE_FLOAT32_C(  -144.11), SIMDE_FLOAT32_C(   789.10), SIMDE_FLOAT32_C(  -343.92),
152                          SIMDE_FLOAT32_C(   344.74), SIMDE_FLOAT32_C(   961.65), SIMDE_FLOAT32_C(   652.93), SIMDE_FLOAT32_C(   754.42)),
153       simde_mm_set_ps(SIMDE_FLOAT32_C(  -846.10), SIMDE_FLOAT32_C(  -248.07), SIMDE_FLOAT32_C(  -411.92), SIMDE_FLOAT32_C(   -88.91)),
154       simde_mm512_set_ps(SIMDE_FLOAT32_C(   481.68), SIMDE_FLOAT32_C(   170.00), SIMDE_FLOAT32_C(  -341.91), SIMDE_FLOAT32_C(   366.57),
155                          SIMDE_FLOAT32_C(   254.48), SIMDE_FLOAT32_C(  -211.73), SIMDE_FLOAT32_C(   755.70), SIMDE_FLOAT32_C(   908.31),
156                          SIMDE_FLOAT32_C(  -363.93), SIMDE_FLOAT32_C(  -144.11), SIMDE_FLOAT32_C(   789.10), SIMDE_FLOAT32_C(  -343.92),
157                          SIMDE_FLOAT32_C(  -846.10), SIMDE_FLOAT32_C(  -248.07), SIMDE_FLOAT32_C(  -411.92), SIMDE_FLOAT32_C(   -88.91)),
158       simde_mm512_set_ps(SIMDE_FLOAT32_C(   481.68), SIMDE_FLOAT32_C(   170.00), SIMDE_FLOAT32_C(  -341.91), SIMDE_FLOAT32_C(   366.57),
159                          SIMDE_FLOAT32_C(   254.48), SIMDE_FLOAT32_C(  -211.73), SIMDE_FLOAT32_C(   755.70), SIMDE_FLOAT32_C(   908.31),
160                          SIMDE_FLOAT32_C(  -846.10), SIMDE_FLOAT32_C(  -248.07), SIMDE_FLOAT32_C(  -411.92), SIMDE_FLOAT32_C(   -88.91),
161                          SIMDE_FLOAT32_C(   344.74), SIMDE_FLOAT32_C(   961.65), SIMDE_FLOAT32_C(   652.93), SIMDE_FLOAT32_C(   754.42)),
162       simde_mm512_set_ps(SIMDE_FLOAT32_C(   481.68), SIMDE_FLOAT32_C(   170.00), SIMDE_FLOAT32_C(  -341.91), SIMDE_FLOAT32_C(   366.57),
163                          SIMDE_FLOAT32_C(  -846.10), SIMDE_FLOAT32_C(  -248.07), SIMDE_FLOAT32_C(  -411.92), SIMDE_FLOAT32_C(   -88.91),
164                          SIMDE_FLOAT32_C(  -363.93), SIMDE_FLOAT32_C(  -144.11), SIMDE_FLOAT32_C(   789.10), SIMDE_FLOAT32_C(  -343.92),
165                          SIMDE_FLOAT32_C(   344.74), SIMDE_FLOAT32_C(   961.65), SIMDE_FLOAT32_C(   652.93), SIMDE_FLOAT32_C(   754.42)),
166       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -846.10), SIMDE_FLOAT32_C(  -248.07), SIMDE_FLOAT32_C(  -411.92), SIMDE_FLOAT32_C(   -88.91),
167                          SIMDE_FLOAT32_C(   254.48), SIMDE_FLOAT32_C(  -211.73), SIMDE_FLOAT32_C(   755.70), SIMDE_FLOAT32_C(   908.31),
168                          SIMDE_FLOAT32_C(  -363.93), SIMDE_FLOAT32_C(  -144.11), SIMDE_FLOAT32_C(   789.10), SIMDE_FLOAT32_C(  -343.92),
169                          SIMDE_FLOAT32_C(   344.74), SIMDE_FLOAT32_C(   961.65), SIMDE_FLOAT32_C(   652.93), SIMDE_FLOAT32_C(   754.42)) },
170     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -382.22), SIMDE_FLOAT32_C(   146.15), SIMDE_FLOAT32_C(  -320.26), SIMDE_FLOAT32_C(   360.04),
171                          SIMDE_FLOAT32_C(  -199.21), SIMDE_FLOAT32_C(   134.15), SIMDE_FLOAT32_C(  -764.34), SIMDE_FLOAT32_C(  -376.86),
172                          SIMDE_FLOAT32_C(  -985.32), SIMDE_FLOAT32_C(   485.76), SIMDE_FLOAT32_C(   234.60), SIMDE_FLOAT32_C(   786.03),
173                          SIMDE_FLOAT32_C(   859.59), SIMDE_FLOAT32_C(   489.95), SIMDE_FLOAT32_C(  -409.35), SIMDE_FLOAT32_C(   796.52)),
174       simde_mm_set_ps(SIMDE_FLOAT32_C(   713.78), SIMDE_FLOAT32_C(  -342.76), SIMDE_FLOAT32_C(  -632.29), SIMDE_FLOAT32_C(  -698.47)),
175       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -382.22), SIMDE_FLOAT32_C(   146.15), SIMDE_FLOAT32_C(  -320.26), SIMDE_FLOAT32_C(   360.04),
176                          SIMDE_FLOAT32_C(  -199.21), SIMDE_FLOAT32_C(   134.15), SIMDE_FLOAT32_C(  -764.34), SIMDE_FLOAT32_C(  -376.86),
177                          SIMDE_FLOAT32_C(  -985.32), SIMDE_FLOAT32_C(   485.76), SIMDE_FLOAT32_C(   234.60), SIMDE_FLOAT32_C(   786.03),
178                          SIMDE_FLOAT32_C(   713.78), SIMDE_FLOAT32_C(  -342.76), SIMDE_FLOAT32_C(  -632.29), SIMDE_FLOAT32_C(  -698.47)),
179       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -382.22), SIMDE_FLOAT32_C(   146.15), SIMDE_FLOAT32_C(  -320.26), SIMDE_FLOAT32_C(   360.04),
180                          SIMDE_FLOAT32_C(  -199.21), SIMDE_FLOAT32_C(   134.15), SIMDE_FLOAT32_C(  -764.34), SIMDE_FLOAT32_C(  -376.86),
181                          SIMDE_FLOAT32_C(   713.78), SIMDE_FLOAT32_C(  -342.76), SIMDE_FLOAT32_C(  -632.29), SIMDE_FLOAT32_C(  -698.47),
182                          SIMDE_FLOAT32_C(   859.59), SIMDE_FLOAT32_C(   489.95), SIMDE_FLOAT32_C(  -409.35), SIMDE_FLOAT32_C(   796.52)),
183       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -382.22), SIMDE_FLOAT32_C(   146.15), SIMDE_FLOAT32_C(  -320.26), SIMDE_FLOAT32_C(   360.04),
184                          SIMDE_FLOAT32_C(   713.78), SIMDE_FLOAT32_C(  -342.76), SIMDE_FLOAT32_C(  -632.29), SIMDE_FLOAT32_C(  -698.47),
185                          SIMDE_FLOAT32_C(  -985.32), SIMDE_FLOAT32_C(   485.76), SIMDE_FLOAT32_C(   234.60), SIMDE_FLOAT32_C(   786.03),
186                          SIMDE_FLOAT32_C(   859.59), SIMDE_FLOAT32_C(   489.95), SIMDE_FLOAT32_C(  -409.35), SIMDE_FLOAT32_C(   796.52)),
187       simde_mm512_set_ps(SIMDE_FLOAT32_C(   713.78), SIMDE_FLOAT32_C(  -342.76), SIMDE_FLOAT32_C(  -632.29), SIMDE_FLOAT32_C(  -698.47),
188                          SIMDE_FLOAT32_C(  -199.21), SIMDE_FLOAT32_C(   134.15), SIMDE_FLOAT32_C(  -764.34), SIMDE_FLOAT32_C(  -376.86),
189                          SIMDE_FLOAT32_C(  -985.32), SIMDE_FLOAT32_C(   485.76), SIMDE_FLOAT32_C(   234.60), SIMDE_FLOAT32_C(   786.03),
190                          SIMDE_FLOAT32_C(   859.59), SIMDE_FLOAT32_C(   489.95), SIMDE_FLOAT32_C(  -409.35), SIMDE_FLOAT32_C(   796.52)) },
191     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -766.40), SIMDE_FLOAT32_C(  -462.89), SIMDE_FLOAT32_C(  -495.88), SIMDE_FLOAT32_C(  -905.06),
192                          SIMDE_FLOAT32_C(  -794.42), SIMDE_FLOAT32_C(   266.49), SIMDE_FLOAT32_C(  -263.27), SIMDE_FLOAT32_C(  -537.47),
193                          SIMDE_FLOAT32_C(    74.85), SIMDE_FLOAT32_C(  -705.33), SIMDE_FLOAT32_C(   127.81), SIMDE_FLOAT32_C(   699.62),
194                          SIMDE_FLOAT32_C(   197.25), SIMDE_FLOAT32_C(   358.04), SIMDE_FLOAT32_C(   348.19), SIMDE_FLOAT32_C(  -974.37)),
195       simde_mm_set_ps(SIMDE_FLOAT32_C(   156.66), SIMDE_FLOAT32_C(   658.18), SIMDE_FLOAT32_C(   198.89), SIMDE_FLOAT32_C(  -330.38)),
196       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -766.40), SIMDE_FLOAT32_C(  -462.89), SIMDE_FLOAT32_C(  -495.88), SIMDE_FLOAT32_C(  -905.06),
197                          SIMDE_FLOAT32_C(  -794.42), SIMDE_FLOAT32_C(   266.49), SIMDE_FLOAT32_C(  -263.27), SIMDE_FLOAT32_C(  -537.47),
198                          SIMDE_FLOAT32_C(    74.85), SIMDE_FLOAT32_C(  -705.33), SIMDE_FLOAT32_C(   127.81), SIMDE_FLOAT32_C(   699.62),
199                          SIMDE_FLOAT32_C(   156.66), SIMDE_FLOAT32_C(   658.18), SIMDE_FLOAT32_C(   198.89), SIMDE_FLOAT32_C(  -330.38)),
200       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -766.40), SIMDE_FLOAT32_C(  -462.89), SIMDE_FLOAT32_C(  -495.88), SIMDE_FLOAT32_C(  -905.06),
201                          SIMDE_FLOAT32_C(  -794.42), SIMDE_FLOAT32_C(   266.49), SIMDE_FLOAT32_C(  -263.27), SIMDE_FLOAT32_C(  -537.47),
202                          SIMDE_FLOAT32_C(   156.66), SIMDE_FLOAT32_C(   658.18), SIMDE_FLOAT32_C(   198.89), SIMDE_FLOAT32_C(  -330.38),
203                          SIMDE_FLOAT32_C(   197.25), SIMDE_FLOAT32_C(   358.04), SIMDE_FLOAT32_C(   348.19), SIMDE_FLOAT32_C(  -974.37)),
204       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -766.40), SIMDE_FLOAT32_C(  -462.89), SIMDE_FLOAT32_C(  -495.88), SIMDE_FLOAT32_C(  -905.06),
205                          SIMDE_FLOAT32_C(   156.66), SIMDE_FLOAT32_C(   658.18), SIMDE_FLOAT32_C(   198.89), SIMDE_FLOAT32_C(  -330.38),
206                          SIMDE_FLOAT32_C(    74.85), SIMDE_FLOAT32_C(  -705.33), SIMDE_FLOAT32_C(   127.81), SIMDE_FLOAT32_C(   699.62),
207                          SIMDE_FLOAT32_C(   197.25), SIMDE_FLOAT32_C(   358.04), SIMDE_FLOAT32_C(   348.19), SIMDE_FLOAT32_C(  -974.37)),
208       simde_mm512_set_ps(SIMDE_FLOAT32_C(   156.66), SIMDE_FLOAT32_C(   658.18), SIMDE_FLOAT32_C(   198.89), SIMDE_FLOAT32_C(  -330.38),
209                          SIMDE_FLOAT32_C(  -794.42), SIMDE_FLOAT32_C(   266.49), SIMDE_FLOAT32_C(  -263.27), SIMDE_FLOAT32_C(  -537.47),
210                          SIMDE_FLOAT32_C(    74.85), SIMDE_FLOAT32_C(  -705.33), SIMDE_FLOAT32_C(   127.81), SIMDE_FLOAT32_C(   699.62),
211                          SIMDE_FLOAT32_C(   197.25), SIMDE_FLOAT32_C(   358.04), SIMDE_FLOAT32_C(   348.19), SIMDE_FLOAT32_C(  -974.37)) },
212   };
213 
214   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
215     simde__m512 r;
216     r = simde_mm512_insertf32x4(test_vec[i].a, test_vec[i].b, 0);
217     simde_assert_m512_close(r, test_vec[i].r0, 1);
218     r = simde_mm512_insertf32x4(test_vec[i].a, test_vec[i].b, 1);
219     simde_assert_m512_close(r, test_vec[i].r1, 1);
220     r = simde_mm512_insertf32x4(test_vec[i].a, test_vec[i].b, 2);
221     simde_assert_m512_close(r, test_vec[i].r2, 1);
222     r = simde_mm512_insertf32x4(test_vec[i].a, test_vec[i].b, 3);
223     simde_assert_m512_close(r, test_vec[i].r3, 1);
224   }
225 
226   return 0;
227 }
228 
229 static int
test_simde_mm512_mask_insertf32x4(SIMDE_MUNIT_TEST_ARGS)230 test_simde_mm512_mask_insertf32x4(SIMDE_MUNIT_TEST_ARGS) {
231   const struct {
232     simde__m512 src;
233     simde__mmask16 k;
234     simde__m512 a;
235     simde__m128 b;
236     simde__m512 r0;
237     simde__m512 r1;
238     simde__m512 r2;
239     simde__m512 r3;
240   } test_vec[8] = {
241     { simde_mm512_set_ps(SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(   -43.35), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(   846.15),
242                          SIMDE_FLOAT32_C(  -514.56), SIMDE_FLOAT32_C(  -860.98), SIMDE_FLOAT32_C(  -280.30), SIMDE_FLOAT32_C(   128.51),
243                          SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(  -932.28), SIMDE_FLOAT32_C(   600.12), SIMDE_FLOAT32_C(  -491.12),
244                          SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(  -268.86), SIMDE_FLOAT32_C(   -71.72), SIMDE_FLOAT32_C(    98.47)),
245       UINT16_C(21335),
246       simde_mm512_set_ps(SIMDE_FLOAT32_C(   483.08), SIMDE_FLOAT32_C(   232.04), SIMDE_FLOAT32_C(   774.81), SIMDE_FLOAT32_C(  -599.01),
247                          SIMDE_FLOAT32_C(    69.04), SIMDE_FLOAT32_C(  -149.02), SIMDE_FLOAT32_C(   240.79), SIMDE_FLOAT32_C(  -839.80),
248                          SIMDE_FLOAT32_C(  -556.90), SIMDE_FLOAT32_C(   160.98), SIMDE_FLOAT32_C(   391.82), SIMDE_FLOAT32_C(  -569.99),
249                          SIMDE_FLOAT32_C(  -327.63), SIMDE_FLOAT32_C(  -172.36), SIMDE_FLOAT32_C(   393.53), SIMDE_FLOAT32_C(    36.69)),
250       simde_mm_set_ps(SIMDE_FLOAT32_C(  -921.00), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(  -471.60), SIMDE_FLOAT32_C(  -333.94)),
251       simde_mm512_set_ps(SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(   232.04), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(  -599.01),
252                          SIMDE_FLOAT32_C(  -514.56), SIMDE_FLOAT32_C(  -860.98), SIMDE_FLOAT32_C(   240.79), SIMDE_FLOAT32_C(  -839.80),
253                          SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(   160.98), SIMDE_FLOAT32_C(   600.12), SIMDE_FLOAT32_C(  -569.99),
254                          SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(  -471.60), SIMDE_FLOAT32_C(  -333.94)),
255       simde_mm512_set_ps(SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(   232.04), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(  -599.01),
256                          SIMDE_FLOAT32_C(  -514.56), SIMDE_FLOAT32_C(  -860.98), SIMDE_FLOAT32_C(   240.79), SIMDE_FLOAT32_C(  -839.80),
257                          SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(   600.12), SIMDE_FLOAT32_C(  -333.94),
258                          SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(  -172.36), SIMDE_FLOAT32_C(   393.53), SIMDE_FLOAT32_C(    36.69)),
259       simde_mm512_set_ps(SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(   232.04), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(  -599.01),
260                          SIMDE_FLOAT32_C(  -514.56), SIMDE_FLOAT32_C(  -860.98), SIMDE_FLOAT32_C(  -471.60), SIMDE_FLOAT32_C(  -333.94),
261                          SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(   160.98), SIMDE_FLOAT32_C(   600.12), SIMDE_FLOAT32_C(  -569.99),
262                          SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(  -172.36), SIMDE_FLOAT32_C(   393.53), SIMDE_FLOAT32_C(    36.69)),
263       simde_mm512_set_ps(SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(  -333.94),
264                          SIMDE_FLOAT32_C(  -514.56), SIMDE_FLOAT32_C(  -860.98), SIMDE_FLOAT32_C(   240.79), SIMDE_FLOAT32_C(  -839.80),
265                          SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(   160.98), SIMDE_FLOAT32_C(   600.12), SIMDE_FLOAT32_C(  -569.99),
266                          SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(  -172.36), SIMDE_FLOAT32_C(   393.53), SIMDE_FLOAT32_C(    36.69)) },
267     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -657.02), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(   337.35), SIMDE_FLOAT32_C(  -278.32),
268                          SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(    39.32), SIMDE_FLOAT32_C(    29.68), SIMDE_FLOAT32_C(  -490.28),
269                          SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(   526.21), SIMDE_FLOAT32_C(  -203.04), SIMDE_FLOAT32_C(   -80.71),
270                          SIMDE_FLOAT32_C(   632.01), SIMDE_FLOAT32_C(   456.89), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -868.59)),
271       UINT16_C(45677),
272       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -213.75), SIMDE_FLOAT32_C(   403.00), SIMDE_FLOAT32_C(  -198.67), SIMDE_FLOAT32_C(   447.98),
273                          SIMDE_FLOAT32_C(  -925.69), SIMDE_FLOAT32_C(   717.83), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(   -37.49),
274                          SIMDE_FLOAT32_C(  -373.66), SIMDE_FLOAT32_C(  -292.35), SIMDE_FLOAT32_C(  -835.53), SIMDE_FLOAT32_C(   571.79),
275                          SIMDE_FLOAT32_C(   675.92), SIMDE_FLOAT32_C(   490.41), SIMDE_FLOAT32_C(    47.59), SIMDE_FLOAT32_C(  -895.71)),
276       simde_mm_set_ps(SIMDE_FLOAT32_C(   907.23), SIMDE_FLOAT32_C(   957.37), SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(  -934.92)),
277       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -213.75), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(  -198.67), SIMDE_FLOAT32_C(   447.98),
278                          SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(    39.32), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(  -490.28),
279                          SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(  -292.35), SIMDE_FLOAT32_C(  -835.53), SIMDE_FLOAT32_C(   -80.71),
280                          SIMDE_FLOAT32_C(   907.23), SIMDE_FLOAT32_C(   957.37), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -934.92)),
281       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -213.75), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(  -198.67), SIMDE_FLOAT32_C(   447.98),
282                          SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(    39.32), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(  -490.28),
283                          SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(   957.37), SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(   -80.71),
284                          SIMDE_FLOAT32_C(   675.92), SIMDE_FLOAT32_C(   490.41), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -895.71)),
285       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -213.75), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(  -198.67), SIMDE_FLOAT32_C(   447.98),
286                          SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(    39.32), SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(  -490.28),
287                          SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(  -292.35), SIMDE_FLOAT32_C(  -835.53), SIMDE_FLOAT32_C(   -80.71),
288                          SIMDE_FLOAT32_C(   675.92), SIMDE_FLOAT32_C(   490.41), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -895.71)),
289       simde_mm512_set_ps(SIMDE_FLOAT32_C(   907.23), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(  -934.92),
290                          SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(    39.32), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(  -490.28),
291                          SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(  -292.35), SIMDE_FLOAT32_C(  -835.53), SIMDE_FLOAT32_C(   -80.71),
292                          SIMDE_FLOAT32_C(   675.92), SIMDE_FLOAT32_C(   490.41), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -895.71)) },
293     { simde_mm512_set_ps(SIMDE_FLOAT32_C(   799.57), SIMDE_FLOAT32_C(  -820.22), SIMDE_FLOAT32_C(  -959.11), SIMDE_FLOAT32_C(   268.99),
294                          SIMDE_FLOAT32_C(  -207.87), SIMDE_FLOAT32_C(  -765.42), SIMDE_FLOAT32_C(   138.83), SIMDE_FLOAT32_C(   699.07),
295                          SIMDE_FLOAT32_C(  -143.73), SIMDE_FLOAT32_C(   709.96), SIMDE_FLOAT32_C(  -767.34), SIMDE_FLOAT32_C(  -588.28),
296                          SIMDE_FLOAT32_C(   586.29), SIMDE_FLOAT32_C(  -760.88), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(  -751.58)),
297       UINT16_C( 7353),
298       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -786.23), SIMDE_FLOAT32_C(   873.30), SIMDE_FLOAT32_C(   241.45), SIMDE_FLOAT32_C(  -432.13),
299                          SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(  -315.78), SIMDE_FLOAT32_C(   -86.06),
300                          SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(   752.26), SIMDE_FLOAT32_C(   609.29), SIMDE_FLOAT32_C(   878.85),
301                          SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(   670.52), SIMDE_FLOAT32_C(   149.72), SIMDE_FLOAT32_C(   213.24)),
302       simde_mm_set_ps(SIMDE_FLOAT32_C(   989.70), SIMDE_FLOAT32_C(  -433.33), SIMDE_FLOAT32_C(  -695.21), SIMDE_FLOAT32_C(    48.49)),
303       simde_mm512_set_ps(SIMDE_FLOAT32_C(   799.57), SIMDE_FLOAT32_C(  -820.22), SIMDE_FLOAT32_C(  -959.11), SIMDE_FLOAT32_C(  -432.13),
304                          SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(   138.83), SIMDE_FLOAT32_C(   699.07),
305                          SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(   709.96), SIMDE_FLOAT32_C(   609.29), SIMDE_FLOAT32_C(   878.85),
306                          SIMDE_FLOAT32_C(   989.70), SIMDE_FLOAT32_C(  -760.88), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(    48.49)),
307       simde_mm512_set_ps(SIMDE_FLOAT32_C(   799.57), SIMDE_FLOAT32_C(  -820.22), SIMDE_FLOAT32_C(  -959.11), SIMDE_FLOAT32_C(  -432.13),
308                          SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(   138.83), SIMDE_FLOAT32_C(   699.07),
309                          SIMDE_FLOAT32_C(   989.70), SIMDE_FLOAT32_C(   709.96), SIMDE_FLOAT32_C(  -695.21), SIMDE_FLOAT32_C(    48.49),
310                          SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(  -760.88), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(   213.24)),
311       simde_mm512_set_ps(SIMDE_FLOAT32_C(   799.57), SIMDE_FLOAT32_C(  -820.22), SIMDE_FLOAT32_C(  -959.11), SIMDE_FLOAT32_C(  -432.13),
312                          SIMDE_FLOAT32_C(   989.70), SIMDE_FLOAT32_C(  -433.33), SIMDE_FLOAT32_C(   138.83), SIMDE_FLOAT32_C(   699.07),
313                          SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(   709.96), SIMDE_FLOAT32_C(   609.29), SIMDE_FLOAT32_C(   878.85),
314                          SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(  -760.88), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(   213.24)),
315       simde_mm512_set_ps(SIMDE_FLOAT32_C(   799.57), SIMDE_FLOAT32_C(  -820.22), SIMDE_FLOAT32_C(  -959.11), SIMDE_FLOAT32_C(    48.49),
316                          SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(   138.83), SIMDE_FLOAT32_C(   699.07),
317                          SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(   709.96), SIMDE_FLOAT32_C(   609.29), SIMDE_FLOAT32_C(   878.85),
318                          SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(  -760.88), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(   213.24)) },
319     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -282.31), SIMDE_FLOAT32_C(  -656.10), SIMDE_FLOAT32_C(  -789.54), SIMDE_FLOAT32_C(  -790.16),
320                          SIMDE_FLOAT32_C(  -415.61), SIMDE_FLOAT32_C(   994.61), SIMDE_FLOAT32_C(  -659.70), SIMDE_FLOAT32_C(   493.30),
321                          SIMDE_FLOAT32_C(   831.29), SIMDE_FLOAT32_C(  -619.50), SIMDE_FLOAT32_C(   952.47), SIMDE_FLOAT32_C(  -492.61),
322                          SIMDE_FLOAT32_C(   -68.16), SIMDE_FLOAT32_C(   717.69), SIMDE_FLOAT32_C(  -663.74), SIMDE_FLOAT32_C(   179.29)),
323       UINT16_C(58590),
324       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -236.67), SIMDE_FLOAT32_C(  -211.91), SIMDE_FLOAT32_C(  -925.76), SIMDE_FLOAT32_C(  -915.62),
325                          SIMDE_FLOAT32_C(   -30.05), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(   493.65), SIMDE_FLOAT32_C(    52.79),
326                          SIMDE_FLOAT32_C(   835.54), SIMDE_FLOAT32_C(  -712.24), SIMDE_FLOAT32_C(   518.12), SIMDE_FLOAT32_C(  -173.80),
327                          SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   180.78), SIMDE_FLOAT32_C(  -289.23), SIMDE_FLOAT32_C(   918.52)),
328       simde_mm_set_ps(SIMDE_FLOAT32_C(   280.87), SIMDE_FLOAT32_C(  -904.81), SIMDE_FLOAT32_C(   380.83), SIMDE_FLOAT32_C(    50.50)),
329       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -236.67), SIMDE_FLOAT32_C(  -211.91), SIMDE_FLOAT32_C(  -925.76), SIMDE_FLOAT32_C(  -790.16),
330                          SIMDE_FLOAT32_C(  -415.61), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(  -659.70), SIMDE_FLOAT32_C(   493.30),
331                          SIMDE_FLOAT32_C(   835.54), SIMDE_FLOAT32_C(  -712.24), SIMDE_FLOAT32_C(   952.47), SIMDE_FLOAT32_C(  -173.80),
332                          SIMDE_FLOAT32_C(   280.87), SIMDE_FLOAT32_C(  -904.81), SIMDE_FLOAT32_C(   380.83), SIMDE_FLOAT32_C(   179.29)),
333       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -236.67), SIMDE_FLOAT32_C(  -211.91), SIMDE_FLOAT32_C(  -925.76), SIMDE_FLOAT32_C(  -790.16),
334                          SIMDE_FLOAT32_C(  -415.61), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(  -659.70), SIMDE_FLOAT32_C(   493.30),
335                          SIMDE_FLOAT32_C(   280.87), SIMDE_FLOAT32_C(  -904.81), SIMDE_FLOAT32_C(   952.47), SIMDE_FLOAT32_C(    50.50),
336                          SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   180.78), SIMDE_FLOAT32_C(  -289.23), SIMDE_FLOAT32_C(   179.29)),
337       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -236.67), SIMDE_FLOAT32_C(  -211.91), SIMDE_FLOAT32_C(  -925.76), SIMDE_FLOAT32_C(  -790.16),
338                          SIMDE_FLOAT32_C(  -415.61), SIMDE_FLOAT32_C(  -904.81), SIMDE_FLOAT32_C(  -659.70), SIMDE_FLOAT32_C(   493.30),
339                          SIMDE_FLOAT32_C(   835.54), SIMDE_FLOAT32_C(  -712.24), SIMDE_FLOAT32_C(   952.47), SIMDE_FLOAT32_C(  -173.80),
340                          SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   180.78), SIMDE_FLOAT32_C(  -289.23), SIMDE_FLOAT32_C(   179.29)),
341       simde_mm512_set_ps(SIMDE_FLOAT32_C(   280.87), SIMDE_FLOAT32_C(  -904.81), SIMDE_FLOAT32_C(   380.83), SIMDE_FLOAT32_C(  -790.16),
342                          SIMDE_FLOAT32_C(  -415.61), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(  -659.70), SIMDE_FLOAT32_C(   493.30),
343                          SIMDE_FLOAT32_C(   835.54), SIMDE_FLOAT32_C(  -712.24), SIMDE_FLOAT32_C(   952.47), SIMDE_FLOAT32_C(  -173.80),
344                          SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   180.78), SIMDE_FLOAT32_C(  -289.23), SIMDE_FLOAT32_C(   179.29)) },
345     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -318.40), SIMDE_FLOAT32_C(  -844.73), SIMDE_FLOAT32_C(   757.65), SIMDE_FLOAT32_C(   677.41),
346                          SIMDE_FLOAT32_C(  -352.24), SIMDE_FLOAT32_C(  -479.79), SIMDE_FLOAT32_C(   602.83), SIMDE_FLOAT32_C(     2.55),
347                          SIMDE_FLOAT32_C(  -388.47), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(  -331.34), SIMDE_FLOAT32_C(    72.67),
348                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(  -722.44), SIMDE_FLOAT32_C(   529.44), SIMDE_FLOAT32_C(  -949.73)),
349       UINT16_C(51237),
350       simde_mm512_set_ps(SIMDE_FLOAT32_C(   915.68), SIMDE_FLOAT32_C(   -53.79), SIMDE_FLOAT32_C(   703.31), SIMDE_FLOAT32_C(   930.79),
351                          SIMDE_FLOAT32_C(   111.33), SIMDE_FLOAT32_C(  -176.75), SIMDE_FLOAT32_C(  -316.94), SIMDE_FLOAT32_C(   639.68),
352                          SIMDE_FLOAT32_C(  -783.00), SIMDE_FLOAT32_C(  -102.18), SIMDE_FLOAT32_C(   960.00), SIMDE_FLOAT32_C(    22.93),
353                          SIMDE_FLOAT32_C(  -395.13), SIMDE_FLOAT32_C(   145.63), SIMDE_FLOAT32_C(  -149.04), SIMDE_FLOAT32_C(   214.37)),
354       simde_mm_set_ps(SIMDE_FLOAT32_C(  -668.43), SIMDE_FLOAT32_C(  -235.48), SIMDE_FLOAT32_C(  -210.00), SIMDE_FLOAT32_C(   476.89)),
355       simde_mm512_set_ps(SIMDE_FLOAT32_C(   915.68), SIMDE_FLOAT32_C(   -53.79), SIMDE_FLOAT32_C(   757.65), SIMDE_FLOAT32_C(   677.41),
356                          SIMDE_FLOAT32_C(   111.33), SIMDE_FLOAT32_C(  -479.79), SIMDE_FLOAT32_C(   602.83), SIMDE_FLOAT32_C(     2.55),
357                          SIMDE_FLOAT32_C(  -388.47), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(   960.00), SIMDE_FLOAT32_C(    72.67),
358                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(  -235.48), SIMDE_FLOAT32_C(   529.44), SIMDE_FLOAT32_C(   476.89)),
359       simde_mm512_set_ps(SIMDE_FLOAT32_C(   915.68), SIMDE_FLOAT32_C(   -53.79), SIMDE_FLOAT32_C(   757.65), SIMDE_FLOAT32_C(   677.41),
360                          SIMDE_FLOAT32_C(   111.33), SIMDE_FLOAT32_C(  -479.79), SIMDE_FLOAT32_C(   602.83), SIMDE_FLOAT32_C(     2.55),
361                          SIMDE_FLOAT32_C(  -388.47), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(  -210.00), SIMDE_FLOAT32_C(    72.67),
362                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(   145.63), SIMDE_FLOAT32_C(   529.44), SIMDE_FLOAT32_C(   214.37)),
363       simde_mm512_set_ps(SIMDE_FLOAT32_C(   915.68), SIMDE_FLOAT32_C(   -53.79), SIMDE_FLOAT32_C(   757.65), SIMDE_FLOAT32_C(   677.41),
364                          SIMDE_FLOAT32_C(  -668.43), SIMDE_FLOAT32_C(  -479.79), SIMDE_FLOAT32_C(   602.83), SIMDE_FLOAT32_C(     2.55),
365                          SIMDE_FLOAT32_C(  -388.47), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(   960.00), SIMDE_FLOAT32_C(    72.67),
366                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(   145.63), SIMDE_FLOAT32_C(   529.44), SIMDE_FLOAT32_C(   214.37)),
367       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -668.43), SIMDE_FLOAT32_C(  -235.48), SIMDE_FLOAT32_C(   757.65), SIMDE_FLOAT32_C(   677.41),
368                          SIMDE_FLOAT32_C(   111.33), SIMDE_FLOAT32_C(  -479.79), SIMDE_FLOAT32_C(   602.83), SIMDE_FLOAT32_C(     2.55),
369                          SIMDE_FLOAT32_C(  -388.47), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(   960.00), SIMDE_FLOAT32_C(    72.67),
370                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(   145.63), SIMDE_FLOAT32_C(   529.44), SIMDE_FLOAT32_C(   214.37)) },
371     { simde_mm512_set_ps(SIMDE_FLOAT32_C(   -96.70), SIMDE_FLOAT32_C(   -44.05), SIMDE_FLOAT32_C(   432.42), SIMDE_FLOAT32_C(   421.92),
372                          SIMDE_FLOAT32_C(   718.96), SIMDE_FLOAT32_C(  -864.59), SIMDE_FLOAT32_C(  -334.42), SIMDE_FLOAT32_C(   660.53),
373                          SIMDE_FLOAT32_C(   748.73), SIMDE_FLOAT32_C(   996.15), SIMDE_FLOAT32_C(  -607.82), SIMDE_FLOAT32_C(   296.47),
374                          SIMDE_FLOAT32_C(  -327.04), SIMDE_FLOAT32_C(   -23.06), SIMDE_FLOAT32_C(   -95.21), SIMDE_FLOAT32_C(    10.75)),
375       UINT16_C(44895),
376       simde_mm512_set_ps(SIMDE_FLOAT32_C(   409.27), SIMDE_FLOAT32_C(   481.83), SIMDE_FLOAT32_C(   601.37), SIMDE_FLOAT32_C(  -660.24),
377                          SIMDE_FLOAT32_C(  -675.56), SIMDE_FLOAT32_C(  -194.09), SIMDE_FLOAT32_C(   149.22), SIMDE_FLOAT32_C(   161.52),
378                          SIMDE_FLOAT32_C(   632.78), SIMDE_FLOAT32_C(   346.90), SIMDE_FLOAT32_C(  -777.05), SIMDE_FLOAT32_C(   621.95),
379                          SIMDE_FLOAT32_C(  -116.18), SIMDE_FLOAT32_C(   909.84), SIMDE_FLOAT32_C(   696.35), SIMDE_FLOAT32_C(  -644.31)),
380       simde_mm_set_ps(SIMDE_FLOAT32_C(   744.11), SIMDE_FLOAT32_C(   849.34), SIMDE_FLOAT32_C(   350.11), SIMDE_FLOAT32_C(   112.68)),
381       simde_mm512_set_ps(SIMDE_FLOAT32_C(   409.27), SIMDE_FLOAT32_C(   -44.05), SIMDE_FLOAT32_C(   601.37), SIMDE_FLOAT32_C(   421.92),
382                          SIMDE_FLOAT32_C(  -675.56), SIMDE_FLOAT32_C(  -194.09), SIMDE_FLOAT32_C(   149.22), SIMDE_FLOAT32_C(   161.52),
383                          SIMDE_FLOAT32_C(   748.73), SIMDE_FLOAT32_C(   346.90), SIMDE_FLOAT32_C(  -607.82), SIMDE_FLOAT32_C(   621.95),
384                          SIMDE_FLOAT32_C(   744.11), SIMDE_FLOAT32_C(   849.34), SIMDE_FLOAT32_C(   350.11), SIMDE_FLOAT32_C(   112.68)),
385       simde_mm512_set_ps(SIMDE_FLOAT32_C(   409.27), SIMDE_FLOAT32_C(   -44.05), SIMDE_FLOAT32_C(   601.37), SIMDE_FLOAT32_C(   421.92),
386                          SIMDE_FLOAT32_C(  -675.56), SIMDE_FLOAT32_C(  -194.09), SIMDE_FLOAT32_C(   149.22), SIMDE_FLOAT32_C(   161.52),
387                          SIMDE_FLOAT32_C(   748.73), SIMDE_FLOAT32_C(   849.34), SIMDE_FLOAT32_C(  -607.82), SIMDE_FLOAT32_C(   112.68),
388                          SIMDE_FLOAT32_C(  -116.18), SIMDE_FLOAT32_C(   909.84), SIMDE_FLOAT32_C(   696.35), SIMDE_FLOAT32_C(  -644.31)),
389       simde_mm512_set_ps(SIMDE_FLOAT32_C(   409.27), SIMDE_FLOAT32_C(   -44.05), SIMDE_FLOAT32_C(   601.37), SIMDE_FLOAT32_C(   421.92),
390                          SIMDE_FLOAT32_C(   744.11), SIMDE_FLOAT32_C(   849.34), SIMDE_FLOAT32_C(   350.11), SIMDE_FLOAT32_C(   112.68),
391                          SIMDE_FLOAT32_C(   748.73), SIMDE_FLOAT32_C(   346.90), SIMDE_FLOAT32_C(  -607.82), SIMDE_FLOAT32_C(   621.95),
392                          SIMDE_FLOAT32_C(  -116.18), SIMDE_FLOAT32_C(   909.84), SIMDE_FLOAT32_C(   696.35), SIMDE_FLOAT32_C(  -644.31)),
393       simde_mm512_set_ps(SIMDE_FLOAT32_C(   744.11), SIMDE_FLOAT32_C(   -44.05), SIMDE_FLOAT32_C(   350.11), SIMDE_FLOAT32_C(   421.92),
394                          SIMDE_FLOAT32_C(  -675.56), SIMDE_FLOAT32_C(  -194.09), SIMDE_FLOAT32_C(   149.22), SIMDE_FLOAT32_C(   161.52),
395                          SIMDE_FLOAT32_C(   748.73), SIMDE_FLOAT32_C(   346.90), SIMDE_FLOAT32_C(  -607.82), SIMDE_FLOAT32_C(   621.95),
396                          SIMDE_FLOAT32_C(  -116.18), SIMDE_FLOAT32_C(   909.84), SIMDE_FLOAT32_C(   696.35), SIMDE_FLOAT32_C(  -644.31)) },
397     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -291.83), SIMDE_FLOAT32_C(   951.57), SIMDE_FLOAT32_C(   272.52), SIMDE_FLOAT32_C(  -735.05),
398                          SIMDE_FLOAT32_C(     5.84), SIMDE_FLOAT32_C(    39.14), SIMDE_FLOAT32_C(   124.68), SIMDE_FLOAT32_C(  -448.70),
399                          SIMDE_FLOAT32_C(   122.69), SIMDE_FLOAT32_C(    65.13), SIMDE_FLOAT32_C(  -972.27), SIMDE_FLOAT32_C(   628.22),
400                          SIMDE_FLOAT32_C(   383.31), SIMDE_FLOAT32_C(   641.22), SIMDE_FLOAT32_C(  -747.07), SIMDE_FLOAT32_C(  -762.67)),
401       UINT16_C(25691),
402       simde_mm512_set_ps(SIMDE_FLOAT32_C(   830.24), SIMDE_FLOAT32_C(   903.53), SIMDE_FLOAT32_C(  -831.08), SIMDE_FLOAT32_C(   815.07),
403                          SIMDE_FLOAT32_C(   196.06), SIMDE_FLOAT32_C(   -83.06), SIMDE_FLOAT32_C(   687.82), SIMDE_FLOAT32_C(  -517.82),
404                          SIMDE_FLOAT32_C(  -294.36), SIMDE_FLOAT32_C(   702.71), SIMDE_FLOAT32_C(  -920.22), SIMDE_FLOAT32_C(  -923.04),
405                          SIMDE_FLOAT32_C(  -251.41), SIMDE_FLOAT32_C(   223.24), SIMDE_FLOAT32_C(  -528.18), SIMDE_FLOAT32_C(   813.86)),
406       simde_mm_set_ps(SIMDE_FLOAT32_C(   757.18), SIMDE_FLOAT32_C(   318.14), SIMDE_FLOAT32_C(   214.84), SIMDE_FLOAT32_C(   399.19)),
407       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -291.83), SIMDE_FLOAT32_C(   903.53), SIMDE_FLOAT32_C(  -831.08), SIMDE_FLOAT32_C(  -735.05),
408                          SIMDE_FLOAT32_C(     5.84), SIMDE_FLOAT32_C(   -83.06), SIMDE_FLOAT32_C(   124.68), SIMDE_FLOAT32_C(  -448.70),
409                          SIMDE_FLOAT32_C(   122.69), SIMDE_FLOAT32_C(   702.71), SIMDE_FLOAT32_C(  -972.27), SIMDE_FLOAT32_C(  -923.04),
410                          SIMDE_FLOAT32_C(   757.18), SIMDE_FLOAT32_C(   641.22), SIMDE_FLOAT32_C(   214.84), SIMDE_FLOAT32_C(   399.19)),
411       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -291.83), SIMDE_FLOAT32_C(   903.53), SIMDE_FLOAT32_C(  -831.08), SIMDE_FLOAT32_C(  -735.05),
412                          SIMDE_FLOAT32_C(     5.84), SIMDE_FLOAT32_C(   -83.06), SIMDE_FLOAT32_C(   124.68), SIMDE_FLOAT32_C(  -448.70),
413                          SIMDE_FLOAT32_C(   122.69), SIMDE_FLOAT32_C(   318.14), SIMDE_FLOAT32_C(  -972.27), SIMDE_FLOAT32_C(   399.19),
414                          SIMDE_FLOAT32_C(  -251.41), SIMDE_FLOAT32_C(   641.22), SIMDE_FLOAT32_C(  -528.18), SIMDE_FLOAT32_C(   813.86)),
415       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -291.83), SIMDE_FLOAT32_C(   903.53), SIMDE_FLOAT32_C(  -831.08), SIMDE_FLOAT32_C(  -735.05),
416                          SIMDE_FLOAT32_C(     5.84), SIMDE_FLOAT32_C(   318.14), SIMDE_FLOAT32_C(   124.68), SIMDE_FLOAT32_C(  -448.70),
417                          SIMDE_FLOAT32_C(   122.69), SIMDE_FLOAT32_C(   702.71), SIMDE_FLOAT32_C(  -972.27), SIMDE_FLOAT32_C(  -923.04),
418                          SIMDE_FLOAT32_C(  -251.41), SIMDE_FLOAT32_C(   641.22), SIMDE_FLOAT32_C(  -528.18), SIMDE_FLOAT32_C(   813.86)),
419       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -291.83), SIMDE_FLOAT32_C(   318.14), SIMDE_FLOAT32_C(   214.84), SIMDE_FLOAT32_C(  -735.05),
420                          SIMDE_FLOAT32_C(     5.84), SIMDE_FLOAT32_C(   -83.06), SIMDE_FLOAT32_C(   124.68), SIMDE_FLOAT32_C(  -448.70),
421                          SIMDE_FLOAT32_C(   122.69), SIMDE_FLOAT32_C(   702.71), SIMDE_FLOAT32_C(  -972.27), SIMDE_FLOAT32_C(  -923.04),
422                          SIMDE_FLOAT32_C(  -251.41), SIMDE_FLOAT32_C(   641.22), SIMDE_FLOAT32_C(  -528.18), SIMDE_FLOAT32_C(   813.86)) },
423     { simde_mm512_set_ps(SIMDE_FLOAT32_C(  -836.14), SIMDE_FLOAT32_C(   203.81), SIMDE_FLOAT32_C(   976.04), SIMDE_FLOAT32_C(  -539.32),
424                          SIMDE_FLOAT32_C(  -223.45), SIMDE_FLOAT32_C(   385.89), SIMDE_FLOAT32_C(   181.57), SIMDE_FLOAT32_C(   739.21),
425                          SIMDE_FLOAT32_C(   355.61), SIMDE_FLOAT32_C(  -450.77), SIMDE_FLOAT32_C(   343.42), SIMDE_FLOAT32_C(  -703.95),
426                          SIMDE_FLOAT32_C(   169.29), SIMDE_FLOAT32_C(   932.53), SIMDE_FLOAT32_C(  -653.71), SIMDE_FLOAT32_C(   371.73)),
427       UINT16_C(40766),
428       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -508.71), SIMDE_FLOAT32_C(  -257.73), SIMDE_FLOAT32_C(   937.76), SIMDE_FLOAT32_C(  -978.21),
429                          SIMDE_FLOAT32_C(   677.79), SIMDE_FLOAT32_C(   768.71), SIMDE_FLOAT32_C(  -498.71), SIMDE_FLOAT32_C(   101.56),
430                          SIMDE_FLOAT32_C(   211.34), SIMDE_FLOAT32_C(  -159.54), SIMDE_FLOAT32_C(   297.01), SIMDE_FLOAT32_C(   147.67),
431                          SIMDE_FLOAT32_C(  -855.53), SIMDE_FLOAT32_C(   391.08), SIMDE_FLOAT32_C(  -710.54), SIMDE_FLOAT32_C(  -140.51)),
432       simde_mm_set_ps(SIMDE_FLOAT32_C(   397.77), SIMDE_FLOAT32_C(   348.86), SIMDE_FLOAT32_C(    24.57), SIMDE_FLOAT32_C(  -908.02)),
433       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -508.71), SIMDE_FLOAT32_C(   203.81), SIMDE_FLOAT32_C(   976.04), SIMDE_FLOAT32_C(  -978.21),
434                          SIMDE_FLOAT32_C(   677.79), SIMDE_FLOAT32_C(   768.71), SIMDE_FLOAT32_C(  -498.71), SIMDE_FLOAT32_C(   101.56),
435                          SIMDE_FLOAT32_C(   355.61), SIMDE_FLOAT32_C(  -450.77), SIMDE_FLOAT32_C(   297.01), SIMDE_FLOAT32_C(   147.67),
436                          SIMDE_FLOAT32_C(   397.77), SIMDE_FLOAT32_C(   348.86), SIMDE_FLOAT32_C(    24.57), SIMDE_FLOAT32_C(   371.73)),
437       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -508.71), SIMDE_FLOAT32_C(   203.81), SIMDE_FLOAT32_C(   976.04), SIMDE_FLOAT32_C(  -978.21),
438                          SIMDE_FLOAT32_C(   677.79), SIMDE_FLOAT32_C(   768.71), SIMDE_FLOAT32_C(  -498.71), SIMDE_FLOAT32_C(   101.56),
439                          SIMDE_FLOAT32_C(   355.61), SIMDE_FLOAT32_C(  -450.77), SIMDE_FLOAT32_C(    24.57), SIMDE_FLOAT32_C(  -908.02),
440                          SIMDE_FLOAT32_C(  -855.53), SIMDE_FLOAT32_C(   391.08), SIMDE_FLOAT32_C(  -710.54), SIMDE_FLOAT32_C(   371.73)),
441       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -508.71), SIMDE_FLOAT32_C(   203.81), SIMDE_FLOAT32_C(   976.04), SIMDE_FLOAT32_C(  -978.21),
442                          SIMDE_FLOAT32_C(   397.77), SIMDE_FLOAT32_C(   348.86), SIMDE_FLOAT32_C(    24.57), SIMDE_FLOAT32_C(  -908.02),
443                          SIMDE_FLOAT32_C(   355.61), SIMDE_FLOAT32_C(  -450.77), SIMDE_FLOAT32_C(   297.01), SIMDE_FLOAT32_C(   147.67),
444                          SIMDE_FLOAT32_C(  -855.53), SIMDE_FLOAT32_C(   391.08), SIMDE_FLOAT32_C(  -710.54), SIMDE_FLOAT32_C(   371.73)),
445       simde_mm512_set_ps(SIMDE_FLOAT32_C(   397.77), SIMDE_FLOAT32_C(   203.81), SIMDE_FLOAT32_C(   976.04), SIMDE_FLOAT32_C(  -908.02),
446                          SIMDE_FLOAT32_C(   677.79), SIMDE_FLOAT32_C(   768.71), SIMDE_FLOAT32_C(  -498.71), SIMDE_FLOAT32_C(   101.56),
447                          SIMDE_FLOAT32_C(   355.61), SIMDE_FLOAT32_C(  -450.77), SIMDE_FLOAT32_C(   297.01), SIMDE_FLOAT32_C(   147.67),
448                          SIMDE_FLOAT32_C(  -855.53), SIMDE_FLOAT32_C(   391.08), SIMDE_FLOAT32_C(  -710.54), SIMDE_FLOAT32_C(   371.73)) },
449   };
450 
451   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
452     simde__m512 r;
453     r = simde_mm512_mask_insertf32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
454     simde_assert_m512_close(r, test_vec[i].r0, 1);
455     r = simde_mm512_mask_insertf32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
456     simde_assert_m512_close(r, test_vec[i].r1, 1);
457     r = simde_mm512_mask_insertf32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 2);
458     simde_assert_m512_close(r, test_vec[i].r2, 1);
459     r = simde_mm512_mask_insertf32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 3);
460     simde_assert_m512_close(r, test_vec[i].r3, 1);
461   }
462 
463   return 0;
464 }
465 
466 static int
test_simde_mm512_maskz_insertf32x4(SIMDE_MUNIT_TEST_ARGS)467 test_simde_mm512_maskz_insertf32x4(SIMDE_MUNIT_TEST_ARGS) {
468   const struct {
469     simde__mmask16 k;
470     simde__m512 a;
471     simde__m128 b;
472     simde__m512 r0;
473     simde__m512 r1;
474     simde__m512 r2;
475     simde__m512 r3;
476   } test_vec[8] = {
477     { UINT16_C(21335),
478       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -556.90), SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(   160.98), SIMDE_FLOAT32_C(  -932.28),
479                          SIMDE_FLOAT32_C(   391.82), SIMDE_FLOAT32_C(   600.12), SIMDE_FLOAT32_C(  -569.99), SIMDE_FLOAT32_C(  -491.12),
480                          SIMDE_FLOAT32_C(  -327.63), SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(  -172.36), SIMDE_FLOAT32_C(  -268.86),
481                          SIMDE_FLOAT32_C(   393.53), SIMDE_FLOAT32_C(   -71.72), SIMDE_FLOAT32_C(    36.69), SIMDE_FLOAT32_C(    98.47)),
482       simde_mm_set_ps(SIMDE_FLOAT32_C(   240.79), SIMDE_FLOAT32_C(  -280.30), SIMDE_FLOAT32_C(  -839.80), SIMDE_FLOAT32_C(   128.51)),
483       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -932.28),
484                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -569.99), SIMDE_FLOAT32_C(  -491.12),
485                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -268.86),
486                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -280.30), SIMDE_FLOAT32_C(  -839.80), SIMDE_FLOAT32_C(   128.51)),
487       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -932.28),
488                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -569.99), SIMDE_FLOAT32_C(  -491.12),
489                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -280.30), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   128.51),
490                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -71.72), SIMDE_FLOAT32_C(    36.69), SIMDE_FLOAT32_C(    98.47)),
491       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   522.06), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -932.28),
492                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -839.80), SIMDE_FLOAT32_C(   128.51),
493                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -268.86),
494                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -71.72), SIMDE_FLOAT32_C(    36.69), SIMDE_FLOAT32_C(    98.47)),
495       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -280.30), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   128.51),
496                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -569.99), SIMDE_FLOAT32_C(  -491.12),
497                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -139.11), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -268.86),
498                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -71.72), SIMDE_FLOAT32_C(    36.69), SIMDE_FLOAT32_C(    98.47)) },
499     { UINT16_C(30312),
500       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -736.92), SIMDE_FLOAT32_C(  -921.00), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(  -471.60),
501                          SIMDE_FLOAT32_C(  -333.94), SIMDE_FLOAT32_C(   483.08), SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(   232.04),
502                          SIMDE_FLOAT32_C(   -43.35), SIMDE_FLOAT32_C(   774.81), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(  -599.01),
503                          SIMDE_FLOAT32_C(   846.15), SIMDE_FLOAT32_C(    69.04), SIMDE_FLOAT32_C(  -514.56), SIMDE_FLOAT32_C(  -149.02)),
504       simde_mm_set_ps(SIMDE_FLOAT32_C(    47.59), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -895.71), SIMDE_FLOAT32_C(  -868.59)),
505       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -921.00), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(  -471.60),
506                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   483.08), SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(     0.00),
507                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   774.81), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(     0.00),
508                          SIMDE_FLOAT32_C(    47.59), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
509       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -921.00), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(  -471.60),
510                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   483.08), SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(     0.00),
511                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -895.71), SIMDE_FLOAT32_C(     0.00),
512                          SIMDE_FLOAT32_C(   846.15), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
513       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -921.00), SIMDE_FLOAT32_C(   283.06), SIMDE_FLOAT32_C(  -471.60),
514                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -895.71), SIMDE_FLOAT32_C(     0.00),
515                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   774.81), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(     0.00),
516                          SIMDE_FLOAT32_C(   846.15), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
517       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    51.33), SIMDE_FLOAT32_C(  -895.71), SIMDE_FLOAT32_C(  -868.59),
518                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   483.08), SIMDE_FLOAT32_C(   903.50), SIMDE_FLOAT32_C(     0.00),
519                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   774.81), SIMDE_FLOAT32_C(   309.91), SIMDE_FLOAT32_C(     0.00),
520                          SIMDE_FLOAT32_C(   846.15), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)) },
521     { UINT16_C(24099),
522       simde_mm512_set_ps(SIMDE_FLOAT32_C(    39.32), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(    29.68), SIMDE_FLOAT32_C(   -37.49),
523                          SIMDE_FLOAT32_C(  -490.28), SIMDE_FLOAT32_C(  -373.66), SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(  -292.35),
524                          SIMDE_FLOAT32_C(   526.21), SIMDE_FLOAT32_C(  -835.53), SIMDE_FLOAT32_C(  -203.04), SIMDE_FLOAT32_C(   571.79),
525                          SIMDE_FLOAT32_C(   -80.71), SIMDE_FLOAT32_C(   675.92), SIMDE_FLOAT32_C(   632.01), SIMDE_FLOAT32_C(   490.41)),
526       simde_mm_set_ps(SIMDE_FLOAT32_C(  -278.32), SIMDE_FLOAT32_C(  -925.69), SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(   717.83)),
527       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -37.49),
528                          SIMDE_FLOAT32_C(  -490.28), SIMDE_FLOAT32_C(  -373.66), SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(     0.00),
529                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -203.04), SIMDE_FLOAT32_C(     0.00),
530                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(   717.83)),
531       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -37.49),
532                          SIMDE_FLOAT32_C(  -490.28), SIMDE_FLOAT32_C(  -373.66), SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(     0.00),
533                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(     0.00),
534                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   632.01), SIMDE_FLOAT32_C(   490.41)),
535       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -489.88), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -37.49),
536                          SIMDE_FLOAT32_C(  -278.32), SIMDE_FLOAT32_C(  -925.69), SIMDE_FLOAT32_C(  -744.41), SIMDE_FLOAT32_C(     0.00),
537                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -203.04), SIMDE_FLOAT32_C(     0.00),
538                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   632.01), SIMDE_FLOAT32_C(   490.41)),
539       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -925.69), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   717.83),
540                          SIMDE_FLOAT32_C(  -490.28), SIMDE_FLOAT32_C(  -373.66), SIMDE_FLOAT32_C(   841.53), SIMDE_FLOAT32_C(     0.00),
541                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -203.04), SIMDE_FLOAT32_C(     0.00),
542                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   632.01), SIMDE_FLOAT32_C(   490.41)) },
543     { UINT16_C(31949),
544       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -760.88), SIMDE_FLOAT32_C(   149.72), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(   213.24),
545                          SIMDE_FLOAT32_C(  -751.58), SIMDE_FLOAT32_C(  -577.36), SIMDE_FLOAT32_C(   907.23), SIMDE_FLOAT32_C(   957.37),
546                          SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(  -934.92), SIMDE_FLOAT32_C(  -213.75), SIMDE_FLOAT32_C(  -657.02),
547                          SIMDE_FLOAT32_C(   403.00), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(  -198.67), SIMDE_FLOAT32_C(   337.35)),
548       simde_mm_set_ps(SIMDE_FLOAT32_C(  -588.28), SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(   586.29), SIMDE_FLOAT32_C(   670.52)),
549       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   149.72), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(   213.24),
550                          SIMDE_FLOAT32_C(  -751.58), SIMDE_FLOAT32_C(  -577.36), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
551                          SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(  -934.92), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
552                          SIMDE_FLOAT32_C(  -588.28), SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   670.52)),
553       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   149.72), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(   213.24),
554                          SIMDE_FLOAT32_C(  -751.58), SIMDE_FLOAT32_C(  -577.36), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
555                          SIMDE_FLOAT32_C(  -588.28), SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
556                          SIMDE_FLOAT32_C(   403.00), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   337.35)),
557       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   149.72), SIMDE_FLOAT32_C(  -617.12), SIMDE_FLOAT32_C(   213.24),
558                          SIMDE_FLOAT32_C(  -588.28), SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
559                          SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(  -934.92), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
560                          SIMDE_FLOAT32_C(   403.00), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   337.35)),
561       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   846.67), SIMDE_FLOAT32_C(   586.29), SIMDE_FLOAT32_C(   670.52),
562                          SIMDE_FLOAT32_C(  -751.58), SIMDE_FLOAT32_C(  -577.36), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
563                          SIMDE_FLOAT32_C(  -359.60), SIMDE_FLOAT32_C(  -934.92), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00),
564                          SIMDE_FLOAT32_C(   403.00), SIMDE_FLOAT32_C(  -629.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   337.35)) },
565     { UINT16_C(10665),
566       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -432.13), SIMDE_FLOAT32_C(   268.99), SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(  -207.87),
567                          SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(  -765.42), SIMDE_FLOAT32_C(  -315.78), SIMDE_FLOAT32_C(   138.83),
568                          SIMDE_FLOAT32_C(   -86.06), SIMDE_FLOAT32_C(   699.07), SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(  -143.73),
569                          SIMDE_FLOAT32_C(   752.26), SIMDE_FLOAT32_C(   709.96), SIMDE_FLOAT32_C(   609.29), SIMDE_FLOAT32_C(  -767.34)),
570       simde_mm_set_ps(SIMDE_FLOAT32_C(   873.30), SIMDE_FLOAT32_C(  -820.22), SIMDE_FLOAT32_C(   241.45), SIMDE_FLOAT32_C(  -959.11)),
571       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(     0.00),
572                          SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   138.83),
573                          SIMDE_FLOAT32_C(   -86.06), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(     0.00),
574                          SIMDE_FLOAT32_C(   873.30), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -959.11)),
575       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(     0.00),
576                          SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   138.83),
577                          SIMDE_FLOAT32_C(   873.30), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   241.45), SIMDE_FLOAT32_C(     0.00),
578                          SIMDE_FLOAT32_C(   752.26), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -767.34)),
579       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -842.15), SIMDE_FLOAT32_C(     0.00),
580                          SIMDE_FLOAT32_C(   873.30), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -959.11),
581                          SIMDE_FLOAT32_C(   -86.06), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(     0.00),
582                          SIMDE_FLOAT32_C(   752.26), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -767.34)),
583       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   241.45), SIMDE_FLOAT32_C(     0.00),
584                          SIMDE_FLOAT32_C(   908.84), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   138.83),
585                          SIMDE_FLOAT32_C(   -86.06), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -413.85), SIMDE_FLOAT32_C(     0.00),
586                          SIMDE_FLOAT32_C(   752.26), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -767.34)) },
587     { UINT16_C(12797),
588       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -173.80), SIMDE_FLOAT32_C(  -492.61), SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   -68.16),
589                          SIMDE_FLOAT32_C(   180.78), SIMDE_FLOAT32_C(   717.69), SIMDE_FLOAT32_C(  -289.23), SIMDE_FLOAT32_C(  -663.74),
590                          SIMDE_FLOAT32_C(   918.52), SIMDE_FLOAT32_C(   179.29), SIMDE_FLOAT32_C(  -422.76), SIMDE_FLOAT32_C(   989.70),
591                          SIMDE_FLOAT32_C(  -433.33), SIMDE_FLOAT32_C(  -695.21), SIMDE_FLOAT32_C(    48.49), SIMDE_FLOAT32_C(  -786.23)),
592       simde_mm_set_ps(SIMDE_FLOAT32_C(  -712.24), SIMDE_FLOAT32_C(  -619.50), SIMDE_FLOAT32_C(   518.12), SIMDE_FLOAT32_C(   952.47)),
593       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   -68.16),
594                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -663.74),
595                          SIMDE_FLOAT32_C(   918.52), SIMDE_FLOAT32_C(   179.29), SIMDE_FLOAT32_C(  -422.76), SIMDE_FLOAT32_C(   989.70),
596                          SIMDE_FLOAT32_C(  -712.24), SIMDE_FLOAT32_C(  -619.50), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   952.47)),
597       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   -68.16),
598                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -663.74),
599                          SIMDE_FLOAT32_C(  -712.24), SIMDE_FLOAT32_C(  -619.50), SIMDE_FLOAT32_C(   518.12), SIMDE_FLOAT32_C(   952.47),
600                          SIMDE_FLOAT32_C(  -433.33), SIMDE_FLOAT32_C(  -695.21), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -786.23)),
601       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   487.08), SIMDE_FLOAT32_C(   -68.16),
602                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   952.47),
603                          SIMDE_FLOAT32_C(   918.52), SIMDE_FLOAT32_C(   179.29), SIMDE_FLOAT32_C(  -422.76), SIMDE_FLOAT32_C(   989.70),
604                          SIMDE_FLOAT32_C(  -433.33), SIMDE_FLOAT32_C(  -695.21), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -786.23)),
605       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   518.12), SIMDE_FLOAT32_C(   952.47),
606                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -663.74),
607                          SIMDE_FLOAT32_C(   918.52), SIMDE_FLOAT32_C(   179.29), SIMDE_FLOAT32_C(  -422.76), SIMDE_FLOAT32_C(   989.70),
608                          SIMDE_FLOAT32_C(  -433.33), SIMDE_FLOAT32_C(  -695.21), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -786.23)) },
609     { UINT16_C(46928),
610       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -282.31), SIMDE_FLOAT32_C(  -211.91), SIMDE_FLOAT32_C(  -656.10), SIMDE_FLOAT32_C(  -925.76),
611                          SIMDE_FLOAT32_C(  -789.54), SIMDE_FLOAT32_C(  -915.62), SIMDE_FLOAT32_C(  -790.16), SIMDE_FLOAT32_C(   -30.05),
612                          SIMDE_FLOAT32_C(  -415.61), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(   994.61), SIMDE_FLOAT32_C(   493.65),
613                          SIMDE_FLOAT32_C(  -659.70), SIMDE_FLOAT32_C(    52.79), SIMDE_FLOAT32_C(   493.30), SIMDE_FLOAT32_C(   835.54)),
614       simde_mm_set_ps(SIMDE_FLOAT32_C(  -904.81), SIMDE_FLOAT32_C(   380.83), SIMDE_FLOAT32_C(    50.50), SIMDE_FLOAT32_C(  -236.67)),
615       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -282.31), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -656.10), SIMDE_FLOAT32_C(  -925.76),
616                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -915.62), SIMDE_FLOAT32_C(  -790.16), SIMDE_FLOAT32_C(   -30.05),
617                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   493.65),
618                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
619       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -282.31), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -656.10), SIMDE_FLOAT32_C(  -925.76),
620                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -915.62), SIMDE_FLOAT32_C(  -790.16), SIMDE_FLOAT32_C(   -30.05),
621                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   380.83), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -236.67),
622                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
623       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -282.31), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -656.10), SIMDE_FLOAT32_C(  -925.76),
624                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   380.83), SIMDE_FLOAT32_C(    50.50), SIMDE_FLOAT32_C(  -236.67),
625                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   493.65),
626                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
627       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -904.81), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    50.50), SIMDE_FLOAT32_C(  -236.67),
628                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -915.62), SIMDE_FLOAT32_C(  -790.16), SIMDE_FLOAT32_C(   -30.05),
629                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   -70.79), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   493.65),
630                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)) },
631     { UINT16_C(30100),
632       simde_mm512_set_ps(SIMDE_FLOAT32_C(  -388.47), SIMDE_FLOAT32_C(  -102.18), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(   960.00),
633                          SIMDE_FLOAT32_C(  -331.34), SIMDE_FLOAT32_C(    22.93), SIMDE_FLOAT32_C(    72.67), SIMDE_FLOAT32_C(  -395.13),
634                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(   145.63), SIMDE_FLOAT32_C(  -722.44), SIMDE_FLOAT32_C(  -149.04),
635                          SIMDE_FLOAT32_C(   529.44), SIMDE_FLOAT32_C(   214.37), SIMDE_FLOAT32_C(  -949.73), SIMDE_FLOAT32_C(  -453.25)),
636       simde_mm_set_ps(SIMDE_FLOAT32_C(   602.83), SIMDE_FLOAT32_C(   639.68), SIMDE_FLOAT32_C(     2.55), SIMDE_FLOAT32_C(  -783.00)),
637       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -102.18), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(   960.00),
638                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    22.93), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -395.13),
639                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -149.04),
640                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   639.68), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
641       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -102.18), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(   960.00),
642                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    22.93), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -395.13),
643                          SIMDE_FLOAT32_C(   602.83), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -783.00),
644                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   214.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
645       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -102.18), SIMDE_FLOAT32_C(  -643.43), SIMDE_FLOAT32_C(   960.00),
646                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   639.68), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -783.00),
647                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -149.04),
648                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   214.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)),
649       simde_mm512_set_ps(SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   639.68), SIMDE_FLOAT32_C(     2.55), SIMDE_FLOAT32_C(  -783.00),
650                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(    22.93), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -395.13),
651                          SIMDE_FLOAT32_C(  -870.79), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(  -149.04),
652                          SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(   214.37), SIMDE_FLOAT32_C(     0.00), SIMDE_FLOAT32_C(     0.00)) },
653   };
654 
655   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
656     simde__m512 r;
657     r = simde_mm512_maskz_insertf32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
658     simde_assert_m512_close(r, test_vec[i].r0, 1);
659     r = simde_mm512_maskz_insertf32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
660     simde_assert_m512_close(r, test_vec[i].r1, 1);
661     r = simde_mm512_maskz_insertf32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 2);
662     simde_assert_m512_close(r, test_vec[i].r2, 1);
663     r = simde_mm512_maskz_insertf32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 3);
664     simde_assert_m512_close(r, test_vec[i].r3, 1);
665   }
666 
667   return 0;
668 }
669 
670 static int
test_simde_mm512_insertf64x4(SIMDE_MUNIT_TEST_ARGS)671 test_simde_mm512_insertf64x4(SIMDE_MUNIT_TEST_ARGS) {
672   const struct {
673     simde__m512d a;
674     simde__m256d b;
675     simde__m512d r0;
676     simde__m512d r1;
677   } test_vec[8] = {
678     { simde_mm512_set_pd(SIMDE_FLOAT64_C( -431.26), SIMDE_FLOAT64_C(  481.25),
679                          SIMDE_FLOAT64_C(  -57.75), SIMDE_FLOAT64_C( -784.26),
680                          SIMDE_FLOAT64_C(  438.04), SIMDE_FLOAT64_C(  549.03),
681                          SIMDE_FLOAT64_C(  729.46), SIMDE_FLOAT64_C(  582.53)),
682       simde_mm256_set_pd(SIMDE_FLOAT64_C( -465.05), SIMDE_FLOAT64_C(  439.15),
683                          SIMDE_FLOAT64_C( -104.57), SIMDE_FLOAT64_C(  -28.15)),
684       simde_mm512_set_pd(SIMDE_FLOAT64_C( -431.26), SIMDE_FLOAT64_C(  481.25),
685                          SIMDE_FLOAT64_C(  -57.75), SIMDE_FLOAT64_C( -784.26),
686                          SIMDE_FLOAT64_C( -465.05), SIMDE_FLOAT64_C(  439.15),
687                          SIMDE_FLOAT64_C( -104.57), SIMDE_FLOAT64_C(  -28.15)),
688       simde_mm512_set_pd(SIMDE_FLOAT64_C( -465.05), SIMDE_FLOAT64_C(  439.15),
689                          SIMDE_FLOAT64_C( -104.57), SIMDE_FLOAT64_C(  -28.15),
690                          SIMDE_FLOAT64_C(  438.04), SIMDE_FLOAT64_C(  549.03),
691                          SIMDE_FLOAT64_C(  729.46), SIMDE_FLOAT64_C(  582.53)) },
692     { simde_mm512_set_pd(SIMDE_FLOAT64_C( -202.49), SIMDE_FLOAT64_C( -470.36),
693                          SIMDE_FLOAT64_C(  966.37), SIMDE_FLOAT64_C(  135.20),
694                          SIMDE_FLOAT64_C( -563.83), SIMDE_FLOAT64_C(  799.30),
695                          SIMDE_FLOAT64_C(  938.85), SIMDE_FLOAT64_C( -576.01)),
696       simde_mm256_set_pd(SIMDE_FLOAT64_C(  355.11), SIMDE_FLOAT64_C( -787.72),
697                          SIMDE_FLOAT64_C(  472.82), SIMDE_FLOAT64_C( -703.51)),
698       simde_mm512_set_pd(SIMDE_FLOAT64_C( -202.49), SIMDE_FLOAT64_C( -470.36),
699                          SIMDE_FLOAT64_C(  966.37), SIMDE_FLOAT64_C(  135.20),
700                          SIMDE_FLOAT64_C(  355.11), SIMDE_FLOAT64_C( -787.72),
701                          SIMDE_FLOAT64_C(  472.82), SIMDE_FLOAT64_C( -703.51)),
702       simde_mm512_set_pd(SIMDE_FLOAT64_C(  355.11), SIMDE_FLOAT64_C( -787.72),
703                          SIMDE_FLOAT64_C(  472.82), SIMDE_FLOAT64_C( -703.51),
704                          SIMDE_FLOAT64_C( -563.83), SIMDE_FLOAT64_C(  799.30),
705                          SIMDE_FLOAT64_C(  938.85), SIMDE_FLOAT64_C( -576.01)) },
706     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  120.10), SIMDE_FLOAT64_C(  -64.06),
707                          SIMDE_FLOAT64_C( -620.03), SIMDE_FLOAT64_C(  559.81),
708                          SIMDE_FLOAT64_C(  185.23), SIMDE_FLOAT64_C( -423.61),
709                          SIMDE_FLOAT64_C(  -11.91), SIMDE_FLOAT64_C(  407.56)),
710       simde_mm256_set_pd(SIMDE_FLOAT64_C( -743.10), SIMDE_FLOAT64_C( -688.01),
711                          SIMDE_FLOAT64_C(  442.76), SIMDE_FLOAT64_C(  931.17)),
712       simde_mm512_set_pd(SIMDE_FLOAT64_C(  120.10), SIMDE_FLOAT64_C(  -64.06),
713                          SIMDE_FLOAT64_C( -620.03), SIMDE_FLOAT64_C(  559.81),
714                          SIMDE_FLOAT64_C( -743.10), SIMDE_FLOAT64_C( -688.01),
715                          SIMDE_FLOAT64_C(  442.76), SIMDE_FLOAT64_C(  931.17)),
716       simde_mm512_set_pd(SIMDE_FLOAT64_C( -743.10), SIMDE_FLOAT64_C( -688.01),
717                          SIMDE_FLOAT64_C(  442.76), SIMDE_FLOAT64_C(  931.17),
718                          SIMDE_FLOAT64_C(  185.23), SIMDE_FLOAT64_C( -423.61),
719                          SIMDE_FLOAT64_C(  -11.91), SIMDE_FLOAT64_C(  407.56)) },
720     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  208.07), SIMDE_FLOAT64_C(  -94.60),
721                          SIMDE_FLOAT64_C(  834.28), SIMDE_FLOAT64_C(  260.50),
722                          SIMDE_FLOAT64_C( -859.51), SIMDE_FLOAT64_C(  -69.45),
723                          SIMDE_FLOAT64_C(   40.36), SIMDE_FLOAT64_C(   95.61)),
724       simde_mm256_set_pd(SIMDE_FLOAT64_C(  193.01), SIMDE_FLOAT64_C( -435.27),
725                          SIMDE_FLOAT64_C(  -84.06), SIMDE_FLOAT64_C(  298.40)),
726       simde_mm512_set_pd(SIMDE_FLOAT64_C(  208.07), SIMDE_FLOAT64_C(  -94.60),
727                          SIMDE_FLOAT64_C(  834.28), SIMDE_FLOAT64_C(  260.50),
728                          SIMDE_FLOAT64_C(  193.01), SIMDE_FLOAT64_C( -435.27),
729                          SIMDE_FLOAT64_C(  -84.06), SIMDE_FLOAT64_C(  298.40)),
730       simde_mm512_set_pd(SIMDE_FLOAT64_C(  193.01), SIMDE_FLOAT64_C( -435.27),
731                          SIMDE_FLOAT64_C(  -84.06), SIMDE_FLOAT64_C(  298.40),
732                          SIMDE_FLOAT64_C( -859.51), SIMDE_FLOAT64_C(  -69.45),
733                          SIMDE_FLOAT64_C(   40.36), SIMDE_FLOAT64_C(   95.61)) },
734     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  -98.08), SIMDE_FLOAT64_C(  464.19),
735                          SIMDE_FLOAT64_C(  711.12), SIMDE_FLOAT64_C(  282.83),
736                          SIMDE_FLOAT64_C( -774.08), SIMDE_FLOAT64_C(  841.24),
737                          SIMDE_FLOAT64_C( -414.07), SIMDE_FLOAT64_C(   79.76)),
738       simde_mm256_set_pd(SIMDE_FLOAT64_C( -157.33), SIMDE_FLOAT64_C( -819.46),
739                          SIMDE_FLOAT64_C(  541.44), SIMDE_FLOAT64_C(  112.81)),
740       simde_mm512_set_pd(SIMDE_FLOAT64_C(  -98.08), SIMDE_FLOAT64_C(  464.19),
741                          SIMDE_FLOAT64_C(  711.12), SIMDE_FLOAT64_C(  282.83),
742                          SIMDE_FLOAT64_C( -157.33), SIMDE_FLOAT64_C( -819.46),
743                          SIMDE_FLOAT64_C(  541.44), SIMDE_FLOAT64_C(  112.81)),
744       simde_mm512_set_pd(SIMDE_FLOAT64_C( -157.33), SIMDE_FLOAT64_C( -819.46),
745                          SIMDE_FLOAT64_C(  541.44), SIMDE_FLOAT64_C(  112.81),
746                          SIMDE_FLOAT64_C( -774.08), SIMDE_FLOAT64_C(  841.24),
747                          SIMDE_FLOAT64_C( -414.07), SIMDE_FLOAT64_C(   79.76)) },
748     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  375.27), SIMDE_FLOAT64_C( -966.90),
749                          SIMDE_FLOAT64_C( -512.98), SIMDE_FLOAT64_C( -737.78),
750                          SIMDE_FLOAT64_C(  664.52), SIMDE_FLOAT64_C( -224.13),
751                          SIMDE_FLOAT64_C(  633.65), SIMDE_FLOAT64_C( -834.15)),
752       simde_mm256_set_pd(SIMDE_FLOAT64_C(   -2.60), SIMDE_FLOAT64_C(  -38.88),
753                          SIMDE_FLOAT64_C(  165.88), SIMDE_FLOAT64_C(  218.73)),
754       simde_mm512_set_pd(SIMDE_FLOAT64_C(  375.27), SIMDE_FLOAT64_C( -966.90),
755                          SIMDE_FLOAT64_C( -512.98), SIMDE_FLOAT64_C( -737.78),
756                          SIMDE_FLOAT64_C(   -2.60), SIMDE_FLOAT64_C(  -38.88),
757                          SIMDE_FLOAT64_C(  165.88), SIMDE_FLOAT64_C(  218.73)),
758       simde_mm512_set_pd(SIMDE_FLOAT64_C(   -2.60), SIMDE_FLOAT64_C(  -38.88),
759                          SIMDE_FLOAT64_C(  165.88), SIMDE_FLOAT64_C(  218.73),
760                          SIMDE_FLOAT64_C(  664.52), SIMDE_FLOAT64_C( -224.13),
761                          SIMDE_FLOAT64_C(  633.65), SIMDE_FLOAT64_C( -834.15)) },
762     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  141.08), SIMDE_FLOAT64_C( -832.50),
763                          SIMDE_FLOAT64_C( -990.15), SIMDE_FLOAT64_C(  438.46),
764                          SIMDE_FLOAT64_C( -887.47), SIMDE_FLOAT64_C(  336.35),
765                          SIMDE_FLOAT64_C( -396.24), SIMDE_FLOAT64_C(   99.21)),
766       simde_mm256_set_pd(SIMDE_FLOAT64_C(  -99.37), SIMDE_FLOAT64_C( -151.02),
767                          SIMDE_FLOAT64_C(  551.65), SIMDE_FLOAT64_C(  155.58)),
768       simde_mm512_set_pd(SIMDE_FLOAT64_C(  141.08), SIMDE_FLOAT64_C( -832.50),
769                          SIMDE_FLOAT64_C( -990.15), SIMDE_FLOAT64_C(  438.46),
770                          SIMDE_FLOAT64_C(  -99.37), SIMDE_FLOAT64_C( -151.02),
771                          SIMDE_FLOAT64_C(  551.65), SIMDE_FLOAT64_C(  155.58)),
772       simde_mm512_set_pd(SIMDE_FLOAT64_C(  -99.37), SIMDE_FLOAT64_C( -151.02),
773                          SIMDE_FLOAT64_C(  551.65), SIMDE_FLOAT64_C(  155.58),
774                          SIMDE_FLOAT64_C( -887.47), SIMDE_FLOAT64_C(  336.35),
775                          SIMDE_FLOAT64_C( -396.24), SIMDE_FLOAT64_C(   99.21)) },
776     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  666.32), SIMDE_FLOAT64_C(  364.80),
777                          SIMDE_FLOAT64_C(  759.27), SIMDE_FLOAT64_C( -524.19),
778                          SIMDE_FLOAT64_C( -726.51), SIMDE_FLOAT64_C(  381.71),
779                          SIMDE_FLOAT64_C(  819.12), SIMDE_FLOAT64_C(  145.28)),
780       simde_mm256_set_pd(SIMDE_FLOAT64_C( -179.98), SIMDE_FLOAT64_C(  258.23),
781                          SIMDE_FLOAT64_C(  246.22), SIMDE_FLOAT64_C(   97.85)),
782       simde_mm512_set_pd(SIMDE_FLOAT64_C(  666.32), SIMDE_FLOAT64_C(  364.80),
783                          SIMDE_FLOAT64_C(  759.27), SIMDE_FLOAT64_C( -524.19),
784                          SIMDE_FLOAT64_C( -179.98), SIMDE_FLOAT64_C(  258.23),
785                          SIMDE_FLOAT64_C(  246.22), SIMDE_FLOAT64_C(   97.85)),
786       simde_mm512_set_pd(SIMDE_FLOAT64_C( -179.98), SIMDE_FLOAT64_C(  258.23),
787                          SIMDE_FLOAT64_C(  246.22), SIMDE_FLOAT64_C(   97.85),
788                          SIMDE_FLOAT64_C( -726.51), SIMDE_FLOAT64_C(  381.71),
789                          SIMDE_FLOAT64_C(  819.12), SIMDE_FLOAT64_C(  145.28)) },
790   };
791 
792   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
793     simde__m512d r;
794     r = simde_mm512_insertf64x4(test_vec[i].a, test_vec[i].b, 0);
795     simde_assert_m512d_close(r, test_vec[i].r0, 1);
796     r = simde_mm512_insertf64x4(test_vec[i].a, test_vec[i].b, 1);
797     simde_assert_m512d_close(r, test_vec[i].r1, 1);
798   }
799 
800   return 0;
801 }
802 
803 static int
test_simde_mm512_mask_insertf64x4(SIMDE_MUNIT_TEST_ARGS)804 test_simde_mm512_mask_insertf64x4(SIMDE_MUNIT_TEST_ARGS) {
805   const struct {
806     simde__m512d src;
807     simde__mmask8 k;
808     simde__m512d a;
809     simde__m256d b;
810     simde__m512d r0;
811     simde__m512d r1;
812   } test_vec[8] = {
813     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  160.98), SIMDE_FLOAT64_C( -932.28),
814                          SIMDE_FLOAT64_C( -569.99), SIMDE_FLOAT64_C( -327.63),
815                          SIMDE_FLOAT64_C( -172.36), SIMDE_FLOAT64_C(  393.53),
816                          SIMDE_FLOAT64_C(  128.51), SIMDE_FLOAT64_C( -556.90)),
817       UINT8_C( 67),
818       simde_mm512_set_pd(SIMDE_FLOAT64_C(  522.06), SIMDE_FLOAT64_C( -932.28),
819                          SIMDE_FLOAT64_C(  600.12), SIMDE_FLOAT64_C( -491.12),
820                          SIMDE_FLOAT64_C( -139.11), SIMDE_FLOAT64_C( -268.86),
821                          SIMDE_FLOAT64_C(  -71.72), SIMDE_FLOAT64_C(   98.47)),
822       simde_mm256_set_pd(SIMDE_FLOAT64_C( -280.30), SIMDE_FLOAT64_C( -839.80),
823                          SIMDE_FLOAT64_C(  128.51), SIMDE_FLOAT64_C( -556.90)),
824       simde_mm512_set_pd(SIMDE_FLOAT64_C(  160.98), SIMDE_FLOAT64_C( -932.28),
825                          SIMDE_FLOAT64_C( -569.99), SIMDE_FLOAT64_C( -327.63),
826                          SIMDE_FLOAT64_C( -172.36), SIMDE_FLOAT64_C(  393.53),
827                          SIMDE_FLOAT64_C(  128.51), SIMDE_FLOAT64_C( -556.90)),
828       simde_mm512_set_pd(SIMDE_FLOAT64_C(  160.98), SIMDE_FLOAT64_C( -839.80),
829                          SIMDE_FLOAT64_C( -569.99), SIMDE_FLOAT64_C( -327.63),
830                          SIMDE_FLOAT64_C( -172.36), SIMDE_FLOAT64_C(  393.53),
831                          SIMDE_FLOAT64_C(  -71.72), SIMDE_FLOAT64_C(   98.47)) },
832     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  283.06), SIMDE_FLOAT64_C( -333.94),
833                          SIMDE_FLOAT64_C(  903.50), SIMDE_FLOAT64_C(  232.04),
834                          SIMDE_FLOAT64_C(  309.91), SIMDE_FLOAT64_C(  846.15),
835                          SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( -736.92)),
836       UINT8_C( 17),
837       simde_mm512_set_pd(SIMDE_FLOAT64_C( -921.00), SIMDE_FLOAT64_C( -471.60),
838                          SIMDE_FLOAT64_C(  483.08), SIMDE_FLOAT64_C(  232.04),
839                          SIMDE_FLOAT64_C(  774.81), SIMDE_FLOAT64_C( -599.01),
840                          SIMDE_FLOAT64_C(   69.04), SIMDE_FLOAT64_C( -149.02)),
841       simde_mm256_set_pd(SIMDE_FLOAT64_C(   51.33), SIMDE_FLOAT64_C( -895.71),
842                          SIMDE_FLOAT64_C( -868.59), SIMDE_FLOAT64_C( -736.92)),
843       simde_mm512_set_pd(SIMDE_FLOAT64_C(  283.06), SIMDE_FLOAT64_C( -333.94),
844                          SIMDE_FLOAT64_C(  903.50), SIMDE_FLOAT64_C(  232.04),
845                          SIMDE_FLOAT64_C(  309.91), SIMDE_FLOAT64_C(  846.15),
846                          SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( -736.92)),
847       simde_mm512_set_pd(SIMDE_FLOAT64_C(  283.06), SIMDE_FLOAT64_C( -333.94),
848                          SIMDE_FLOAT64_C(  903.50), SIMDE_FLOAT64_C( -736.92),
849                          SIMDE_FLOAT64_C(  309.91), SIMDE_FLOAT64_C(  846.15),
850                          SIMDE_FLOAT64_C( -514.56), SIMDE_FLOAT64_C( -149.02)) },
851     { simde_mm512_set_pd(SIMDE_FLOAT64_C(   29.68), SIMDE_FLOAT64_C( -490.28),
852                          SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C(  526.21),
853                          SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C(  -80.71),
854                          SIMDE_FLOAT64_C(  717.83), SIMDE_FLOAT64_C(   39.32)),
855       UINT8_C( 43),
856       simde_mm512_set_pd(SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C(  -37.49),
857                          SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C( -292.35),
858                          SIMDE_FLOAT64_C( -835.53), SIMDE_FLOAT64_C(  571.79),
859                          SIMDE_FLOAT64_C(  675.92), SIMDE_FLOAT64_C(  490.41)),
860       simde_mm256_set_pd(SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C( -744.41),
861                          SIMDE_FLOAT64_C(  717.83), SIMDE_FLOAT64_C(   39.32)),
862       simde_mm512_set_pd(SIMDE_FLOAT64_C(   29.68), SIMDE_FLOAT64_C( -490.28),
863                          SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C(  526.21),
864                          SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C(  -80.71),
865                          SIMDE_FLOAT64_C(  717.83), SIMDE_FLOAT64_C(   39.32)),
866       simde_mm512_set_pd(SIMDE_FLOAT64_C(   29.68), SIMDE_FLOAT64_C( -490.28),
867                          SIMDE_FLOAT64_C(  717.83), SIMDE_FLOAT64_C(  526.21),
868                          SIMDE_FLOAT64_C( -835.53), SIMDE_FLOAT64_C(  -80.71),
869                          SIMDE_FLOAT64_C(  675.92), SIMDE_FLOAT64_C(  490.41)) },
870     { simde_mm512_set_pd(SIMDE_FLOAT64_C( -617.12), SIMDE_FLOAT64_C(  213.24),
871                          SIMDE_FLOAT64_C( -577.36), SIMDE_FLOAT64_C(  957.37),
872                          SIMDE_FLOAT64_C(  846.67), SIMDE_FLOAT64_C(  403.00),
873                          SIMDE_FLOAT64_C( -198.67), SIMDE_FLOAT64_C(  447.98)),
874       UINT8_C(120),
875       simde_mm512_set_pd(SIMDE_FLOAT64_C(  149.72), SIMDE_FLOAT64_C(  213.24),
876                          SIMDE_FLOAT64_C( -577.36), SIMDE_FLOAT64_C(  957.37),
877                          SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( -657.02),
878                          SIMDE_FLOAT64_C( -629.37), SIMDE_FLOAT64_C(  337.35)),
879       simde_mm256_set_pd(SIMDE_FLOAT64_C(  846.67), SIMDE_FLOAT64_C(  586.29),
880                          SIMDE_FLOAT64_C(  670.52), SIMDE_FLOAT64_C( -760.88)),
881       simde_mm512_set_pd(SIMDE_FLOAT64_C( -617.12), SIMDE_FLOAT64_C(  213.24),
882                          SIMDE_FLOAT64_C( -577.36), SIMDE_FLOAT64_C(  957.37),
883                          SIMDE_FLOAT64_C(  846.67), SIMDE_FLOAT64_C(  403.00),
884                          SIMDE_FLOAT64_C( -198.67), SIMDE_FLOAT64_C(  447.98)),
885       simde_mm512_set_pd(SIMDE_FLOAT64_C( -617.12), SIMDE_FLOAT64_C(  586.29),
886                          SIMDE_FLOAT64_C(  670.52), SIMDE_FLOAT64_C( -760.88),
887                          SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C(  403.00),
888                          SIMDE_FLOAT64_C( -198.67), SIMDE_FLOAT64_C(  447.98)) },
889     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  268.99), SIMDE_FLOAT64_C( -207.87),
890                          SIMDE_FLOAT64_C( -765.42), SIMDE_FLOAT64_C(  138.83),
891                          SIMDE_FLOAT64_C( -413.85), SIMDE_FLOAT64_C(  241.45),
892                          SIMDE_FLOAT64_C(  609.29), SIMDE_FLOAT64_C( -432.13)),
893       UINT8_C(245),
894       simde_mm512_set_pd(SIMDE_FLOAT64_C(  268.99), SIMDE_FLOAT64_C( -207.87),
895                          SIMDE_FLOAT64_C( -765.42), SIMDE_FLOAT64_C(  138.83),
896                          SIMDE_FLOAT64_C(  699.07), SIMDE_FLOAT64_C( -143.73),
897                          SIMDE_FLOAT64_C(  709.96), SIMDE_FLOAT64_C( -767.34)),
898       simde_mm256_set_pd(SIMDE_FLOAT64_C( -820.22), SIMDE_FLOAT64_C(  241.45),
899                          SIMDE_FLOAT64_C( -959.11), SIMDE_FLOAT64_C( -432.13)),
900       simde_mm512_set_pd(SIMDE_FLOAT64_C(  268.99), SIMDE_FLOAT64_C( -207.87),
901                          SIMDE_FLOAT64_C( -765.42), SIMDE_FLOAT64_C(  138.83),
902                          SIMDE_FLOAT64_C( -413.85), SIMDE_FLOAT64_C(  241.45),
903                          SIMDE_FLOAT64_C(  609.29), SIMDE_FLOAT64_C( -432.13)),
904       simde_mm512_set_pd(SIMDE_FLOAT64_C( -820.22), SIMDE_FLOAT64_C(  241.45),
905                          SIMDE_FLOAT64_C( -959.11), SIMDE_FLOAT64_C( -432.13),
906                          SIMDE_FLOAT64_C( -413.85), SIMDE_FLOAT64_C( -143.73),
907                          SIMDE_FLOAT64_C(  609.29), SIMDE_FLOAT64_C( -767.34)) },
908     { simde_mm512_set_pd(SIMDE_FLOAT64_C(  487.08), SIMDE_FLOAT64_C(  -68.16),
909                          SIMDE_FLOAT64_C( -289.23), SIMDE_FLOAT64_C(  918.52),
910                          SIMDE_FLOAT64_C( -422.76), SIMDE_FLOAT64_C(  518.12),
911                          SIMDE_FLOAT64_C(  952.47), SIMDE_FLOAT64_C( -173.80)),
912       UINT8_C( 71),
913       simde_mm512_set_pd(SIMDE_FLOAT64_C( -492.61), SIMDE_FLOAT64_C(  -68.16),
914                          SIMDE_FLOAT64_C(  717.69), SIMDE_FLOAT64_C( -663.74),
915                          SIMDE_FLOAT64_C(  179.29), SIMDE_FLOAT64_C(  989.70),
916                          SIMDE_FLOAT64_C( -695.21), SIMDE_FLOAT64_C( -786.23)),
917       simde_mm256_set_pd(SIMDE_FLOAT64_C( -619.50), SIMDE_FLOAT64_C(  518.12),
918                          SIMDE_FLOAT64_C(  952.47), SIMDE_FLOAT64_C( -173.80)),
919       simde_mm512_set_pd(SIMDE_FLOAT64_C(  487.08), SIMDE_FLOAT64_C(  -68.16),
920                          SIMDE_FLOAT64_C( -289.23), SIMDE_FLOAT64_C(  918.52),
921                          SIMDE_FLOAT64_C( -422.76), SIMDE_FLOAT64_C(  518.12),
922                          SIMDE_FLOAT64_C(  952.47), SIMDE_FLOAT64_C( -173.80)),
923       simde_mm512_set_pd(SIMDE_FLOAT64_C(  487.08), SIMDE_FLOAT64_C(  518.12),
924                          SIMDE_FLOAT64_C( -289.23), SIMDE_FLOAT64_C(  918.52),
925                          SIMDE_FLOAT64_C( -422.76), SIMDE_FLOAT64_C(  989.70),
926                          SIMDE_FLOAT64_C( -695.21), SIMDE_FLOAT64_C( -786.23)) },
927     { simde_mm512_set_pd(SIMDE_FLOAT64_C( -656.10), SIMDE_FLOAT64_C( -789.54),
928                          SIMDE_FLOAT64_C( -790.16), SIMDE_FLOAT64_C(  -30.05),
929                          SIMDE_FLOAT64_C(  994.61), SIMDE_FLOAT64_C(   50.50),
930                          SIMDE_FLOAT64_C(  493.30), SIMDE_FLOAT64_C(  831.29)),
931       UINT8_C( 20),
932       simde_mm512_set_pd(SIMDE_FLOAT64_C( -211.91), SIMDE_FLOAT64_C( -925.76),
933                          SIMDE_FLOAT64_C( -915.62), SIMDE_FLOAT64_C(  -30.05),
934                          SIMDE_FLOAT64_C(  -70.79), SIMDE_FLOAT64_C(  493.65),
935                          SIMDE_FLOAT64_C(   52.79), SIMDE_FLOAT64_C(  835.54)),
936       simde_mm256_set_pd(SIMDE_FLOAT64_C(  380.83), SIMDE_FLOAT64_C(   50.50),
937                          SIMDE_FLOAT64_C( -236.67), SIMDE_FLOAT64_C( -282.31)),
938       simde_mm512_set_pd(SIMDE_FLOAT64_C( -656.10), SIMDE_FLOAT64_C( -789.54),
939                          SIMDE_FLOAT64_C( -790.16), SIMDE_FLOAT64_C(  -30.05),
940                          SIMDE_FLOAT64_C(  994.61), SIMDE_FLOAT64_C(   50.50),
941                          SIMDE_FLOAT64_C(  493.30), SIMDE_FLOAT64_C(  831.29)),
942       simde_mm512_set_pd(SIMDE_FLOAT64_C( -656.10), SIMDE_FLOAT64_C( -789.54),
943                          SIMDE_FLOAT64_C( -790.16), SIMDE_FLOAT64_C( -282.31),
944                          SIMDE_FLOAT64_C(  994.61), SIMDE_FLOAT64_C(  493.65),
945                          SIMDE_FLOAT64_C(  493.30), SIMDE_FLOAT64_C(  831.29)) },
946     { simde_mm512_set_pd(SIMDE_FLOAT64_C( -643.43), SIMDE_FLOAT64_C( -331.34),
947                          SIMDE_FLOAT64_C(   22.93), SIMDE_FLOAT64_C( -395.13),
948                          SIMDE_FLOAT64_C(  639.68), SIMDE_FLOAT64_C(    2.55),
949                          SIMDE_FLOAT64_C( -949.73), SIMDE_FLOAT64_C( -388.47)),
950       UINT8_C( 61),
951       simde_mm512_set_pd(SIMDE_FLOAT64_C( -102.18), SIMDE_FLOAT64_C(  960.00),
952                          SIMDE_FLOAT64_C(   22.93), SIMDE_FLOAT64_C( -395.13),
953                          SIMDE_FLOAT64_C(  145.63), SIMDE_FLOAT64_C( -149.04),
954                          SIMDE_FLOAT64_C(  214.37), SIMDE_FLOAT64_C( -453.25)),
955       simde_mm256_set_pd(SIMDE_FLOAT64_C(  639.68), SIMDE_FLOAT64_C(    2.55),
956                          SIMDE_FLOAT64_C( -783.00), SIMDE_FLOAT64_C( -388.47)),
957       simde_mm512_set_pd(SIMDE_FLOAT64_C( -643.43), SIMDE_FLOAT64_C( -331.34),
958                          SIMDE_FLOAT64_C(   22.93), SIMDE_FLOAT64_C( -395.13),
959                          SIMDE_FLOAT64_C(  639.68), SIMDE_FLOAT64_C(    2.55),
960                          SIMDE_FLOAT64_C( -949.73), SIMDE_FLOAT64_C( -388.47)),
961       simde_mm512_set_pd(SIMDE_FLOAT64_C( -643.43), SIMDE_FLOAT64_C( -331.34),
962                          SIMDE_FLOAT64_C( -783.00), SIMDE_FLOAT64_C( -388.47),
963                          SIMDE_FLOAT64_C(  145.63), SIMDE_FLOAT64_C( -149.04),
964                          SIMDE_FLOAT64_C( -949.73), SIMDE_FLOAT64_C( -453.25)) },
965   };
966 
967   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
968     simde__m512d r;
969     r = simde_mm512_mask_insertf64x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
970     simde_assert_m512d_close(r, test_vec[i].r0, 1);
971     r = simde_mm512_mask_insertf64x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
972     simde_assert_m512d_close(r, test_vec[i].r1, 1);
973   }
974 
975   return 0;
976 }
977 
978 static int
test_simde_mm512_maskz_insertf64x4(SIMDE_MUNIT_TEST_ARGS)979 test_simde_mm512_maskz_insertf64x4(SIMDE_MUNIT_TEST_ARGS) {
980   const struct {
981     simde__mmask8 k;
982     simde__m512d a;
983     simde__m256d b;
984     simde__m512d r0;
985     simde__m512d r1;
986   } test_vec[8] = {
987     { UINT8_C( 32),
988       simde_mm512_set_pd(SIMDE_FLOAT64_C( -139.11), SIMDE_FLOAT64_C( -172.36),
989                          SIMDE_FLOAT64_C( -268.86), SIMDE_FLOAT64_C(  393.53),
990                          SIMDE_FLOAT64_C(  -71.72), SIMDE_FLOAT64_C(   36.69),
991                          SIMDE_FLOAT64_C(   98.47), SIMDE_FLOAT64_C( -135.52)),
992       simde_mm256_set_pd(SIMDE_FLOAT64_C(  600.12), SIMDE_FLOAT64_C( -569.99),
993                          SIMDE_FLOAT64_C( -491.12), SIMDE_FLOAT64_C( -327.63)),
994       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
995                          SIMDE_FLOAT64_C( -268.86), SIMDE_FLOAT64_C(    0.00),
996                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
997                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)),
998       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
999                          SIMDE_FLOAT64_C( -491.12), SIMDE_FLOAT64_C(    0.00),
1000                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1001                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)) },
1002     { UINT8_C(109),
1003       simde_mm512_set_pd(SIMDE_FLOAT64_C(  240.79), SIMDE_FLOAT64_C( -280.30),
1004                          SIMDE_FLOAT64_C( -839.80), SIMDE_FLOAT64_C(  128.51),
1005                          SIMDE_FLOAT64_C( -556.90), SIMDE_FLOAT64_C(  522.06),
1006                          SIMDE_FLOAT64_C(  160.98), SIMDE_FLOAT64_C( -932.28)),
1007       simde_mm256_set_pd(SIMDE_FLOAT64_C(   69.04), SIMDE_FLOAT64_C( -514.56),
1008                          SIMDE_FLOAT64_C( -149.02), SIMDE_FLOAT64_C( -860.98)),
1009       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -280.30),
1010                          SIMDE_FLOAT64_C( -839.80), SIMDE_FLOAT64_C(    0.00),
1011                          SIMDE_FLOAT64_C(   69.04), SIMDE_FLOAT64_C( -514.56),
1012                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -860.98)),
1013       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -514.56),
1014                          SIMDE_FLOAT64_C( -149.02), SIMDE_FLOAT64_C(    0.00),
1015                          SIMDE_FLOAT64_C( -556.90), SIMDE_FLOAT64_C(  522.06),
1016                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -932.28)) },
1017     { UINT8_C( 64),
1018       simde_mm512_set_pd(SIMDE_FLOAT64_C( -333.94), SIMDE_FLOAT64_C(  483.08),
1019                          SIMDE_FLOAT64_C(  903.50), SIMDE_FLOAT64_C(  232.04),
1020                          SIMDE_FLOAT64_C(  -43.35), SIMDE_FLOAT64_C(  774.81),
1021                          SIMDE_FLOAT64_C(  309.91), SIMDE_FLOAT64_C( -599.01)),
1022       simde_mm256_set_pd(SIMDE_FLOAT64_C( -736.92), SIMDE_FLOAT64_C( -921.00),
1023                          SIMDE_FLOAT64_C(  283.06), SIMDE_FLOAT64_C( -471.60)),
1024       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(  483.08),
1025                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1026                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1027                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)),
1028       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -921.00),
1029                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1030                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1031                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)) },
1032     { UINT8_C(  7),
1033       simde_mm512_set_pd(SIMDE_FLOAT64_C(  -80.71), SIMDE_FLOAT64_C(  675.92),
1034                          SIMDE_FLOAT64_C(  632.01), SIMDE_FLOAT64_C(  490.41),
1035                          SIMDE_FLOAT64_C(  456.89), SIMDE_FLOAT64_C(   47.59),
1036                          SIMDE_FLOAT64_C(   51.33), SIMDE_FLOAT64_C( -895.71)),
1037       simde_mm256_set_pd(SIMDE_FLOAT64_C(  526.21), SIMDE_FLOAT64_C( -835.53),
1038                          SIMDE_FLOAT64_C( -203.04), SIMDE_FLOAT64_C(  571.79)),
1039       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1040                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1041                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -835.53),
1042                          SIMDE_FLOAT64_C( -203.04), SIMDE_FLOAT64_C(  571.79)),
1043       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1044                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1045                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   47.59),
1046                          SIMDE_FLOAT64_C(   51.33), SIMDE_FLOAT64_C( -895.71)) },
1047     { UINT8_C(100),
1048       simde_mm512_set_pd(SIMDE_FLOAT64_C(  717.83), SIMDE_FLOAT64_C(   39.32),
1049                          SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C(   29.68),
1050                          SIMDE_FLOAT64_C(  -37.49), SIMDE_FLOAT64_C( -490.28),
1051                          SIMDE_FLOAT64_C( -373.66), SIMDE_FLOAT64_C(  841.53)),
1052       simde_mm256_set_pd(SIMDE_FLOAT64_C(  447.98), SIMDE_FLOAT64_C( -278.32),
1053                          SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C( -744.41)),
1054       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(   39.32),
1055                          SIMDE_FLOAT64_C( -489.88), SIMDE_FLOAT64_C(    0.00),
1056                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -278.32),
1057                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)),
1058       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -278.32),
1059                          SIMDE_FLOAT64_C( -925.69), SIMDE_FLOAT64_C(    0.00),
1060                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -490.28),
1061                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)) },
1062     { UINT8_C( 84),
1063       simde_mm512_set_pd(SIMDE_FLOAT64_C(  957.37), SIMDE_FLOAT64_C( -359.60),
1064                          SIMDE_FLOAT64_C( -934.92), SIMDE_FLOAT64_C( -213.75),
1065                          SIMDE_FLOAT64_C( -657.02), SIMDE_FLOAT64_C(  403.00),
1066                          SIMDE_FLOAT64_C( -629.37), SIMDE_FLOAT64_C( -198.67)),
1067       simde_mm256_set_pd(SIMDE_FLOAT64_C(  213.24), SIMDE_FLOAT64_C( -751.58),
1068                          SIMDE_FLOAT64_C( -577.36), SIMDE_FLOAT64_C(  907.23)),
1069       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -359.60),
1070                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -213.75),
1071                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -751.58),
1072                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)),
1073       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C( -751.58),
1074                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(  907.23),
1075                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(  403.00),
1076                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00)) },
1077     { UINT8_C( 14),
1078       simde_mm512_set_pd(SIMDE_FLOAT64_C( -767.34), SIMDE_FLOAT64_C(  878.85),
1079                          SIMDE_FLOAT64_C( -588.28), SIMDE_FLOAT64_C(  846.67),
1080                          SIMDE_FLOAT64_C(  586.29), SIMDE_FLOAT64_C(  670.52),
1081                          SIMDE_FLOAT64_C( -760.88), SIMDE_FLOAT64_C(  149.72)),
1082       simde_mm256_set_pd(SIMDE_FLOAT64_C( -143.73), SIMDE_FLOAT64_C(  752.26),
1083                          SIMDE_FLOAT64_C(  709.96), SIMDE_FLOAT64_C(  609.29)),
1084       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1085                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1086                          SIMDE_FLOAT64_C( -143.73), SIMDE_FLOAT64_C(  752.26),
1087                          SIMDE_FLOAT64_C(  709.96), SIMDE_FLOAT64_C(    0.00)),
1088       simde_mm512_set_pd(SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1089                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(    0.00),
1090                          SIMDE_FLOAT64_C(  586.29), SIMDE_FLOAT64_C(  670.52),
1091                          SIMDE_FLOAT64_C( -760.88), SIMDE_FLOAT64_C(    0.00)) },
1092     { UINT8_C(237),
1093       simde_mm512_set_pd(SIMDE_FLOAT64_C( -842.15), SIMDE_FLOAT64_C( -207.87),
1094                          SIMDE_FLOAT64_C(  908.84), SIMDE_FLOAT64_C( -765.42),
1095                          SIMDE_FLOAT64_C( -315.78), SIMDE_FLOAT64_C(  138.83),
1096                          SIMDE_FLOAT64_C(  -86.06), SIMDE_FLOAT64_C(  699.07)),
1097       simde_mm256_set_pd(SIMDE_FLOAT64_C(  241.45), SIMDE_FLOAT64_C( -959.11),
1098                          SIMDE_FLOAT64_C( -432.13), SIMDE_FLOAT64_C(  268.99)),
1099       simde_mm512_set_pd(SIMDE_FLOAT64_C( -842.15), SIMDE_FLOAT64_C( -207.87),
1100                          SIMDE_FLOAT64_C(  908.84), SIMDE_FLOAT64_C(    0.00),
1101                          SIMDE_FLOAT64_C(  241.45), SIMDE_FLOAT64_C( -959.11),
1102                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(  268.99)),
1103       simde_mm512_set_pd(SIMDE_FLOAT64_C(  241.45), SIMDE_FLOAT64_C( -959.11),
1104                          SIMDE_FLOAT64_C( -432.13), SIMDE_FLOAT64_C(    0.00),
1105                          SIMDE_FLOAT64_C( -315.78), SIMDE_FLOAT64_C(  138.83),
1106                          SIMDE_FLOAT64_C(    0.00), SIMDE_FLOAT64_C(  699.07)) },
1107   };
1108 
1109   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
1110     simde__m512d r;
1111     r = simde_mm512_maskz_insertf64x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
1112     simde_assert_m512d_close(r, test_vec[i].r0, 1);
1113     r = simde_mm512_maskz_insertf64x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
1114     simde_assert_m512d_close(r, test_vec[i].r1, 1);
1115   }
1116 
1117   return 0;
1118 }
1119 
1120 static int
test_simde_mm512_inserti32x4(SIMDE_MUNIT_TEST_ARGS)1121 test_simde_mm512_inserti32x4(SIMDE_MUNIT_TEST_ARGS) {
1122   const struct {
1123     simde__m512i a;
1124     simde__m128i b;
1125     simde__m512i r0;
1126     simde__m512i r1;
1127     simde__m512i r2;
1128     simde__m512i r3;
1129   } test_vec[8] = {
1130     { simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C(-1801776439), INT32_C(  145438126), INT32_C(-1306064352),
1131                             INT32_C( -858736392), INT32_C(  923442479), INT32_C( 1092805562), INT32_C( 1443901717),
1132                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932), INT32_C(-1302383354),
1133                             INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201), INT32_C( 1856459607)),
1134       simde_mm_set_epi32(INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754), INT32_C(  951544639)),
1135       simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C(-1801776439), INT32_C(  145438126), INT32_C(-1306064352),
1136                             INT32_C( -858736392), INT32_C(  923442479), INT32_C( 1092805562), INT32_C( 1443901717),
1137                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932), INT32_C(-1302383354),
1138                             INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754), INT32_C(  951544639)),
1139       simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C(-1801776439), INT32_C(  145438126), INT32_C(-1306064352),
1140                             INT32_C( -858736392), INT32_C(  923442479), INT32_C( 1092805562), INT32_C( 1443901717),
1141                             INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754), INT32_C(  951544639),
1142                             INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201), INT32_C( 1856459607)),
1143       simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C(-1801776439), INT32_C(  145438126), INT32_C(-1306064352),
1144                             INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754), INT32_C(  951544639),
1145                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932), INT32_C(-1302383354),
1146                             INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201), INT32_C( 1856459607)),
1147       simde_mm512_set_epi32(INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754), INT32_C(  951544639),
1148                             INT32_C( -858736392), INT32_C(  923442479), INT32_C( 1092805562), INT32_C( 1443901717),
1149                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932), INT32_C(-1302383354),
1150                             INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201), INT32_C( 1856459607)) },
1151     { simde_mm512_set_epi32(INT32_C(-1539616610), INT32_C( 1134735685), INT32_C( 1430356381), INT32_C(-1110068455),
1152                             INT32_C( -207240031), INT32_C(-1649179267), INT32_C( 2054398444), INT32_C( -483586503),
1153                             INT32_C(-1481960002), INT32_C(  861125508), INT32_C( -330381203), INT32_C(-1999224530),
1154                             INT32_C( 1042470181), INT32_C( 1827473477), INT32_C(  298546792), INT32_C(-1630396605)),
1155       simde_mm_set_epi32(INT32_C(  223952317), INT32_C(  282198336), INT32_C(  564965997), INT32_C(  169645898)),
1156       simde_mm512_set_epi32(INT32_C(-1539616610), INT32_C( 1134735685), INT32_C( 1430356381), INT32_C(-1110068455),
1157                             INT32_C( -207240031), INT32_C(-1649179267), INT32_C( 2054398444), INT32_C( -483586503),
1158                             INT32_C(-1481960002), INT32_C(  861125508), INT32_C( -330381203), INT32_C(-1999224530),
1159                             INT32_C(  223952317), INT32_C(  282198336), INT32_C(  564965997), INT32_C(  169645898)),
1160       simde_mm512_set_epi32(INT32_C(-1539616610), INT32_C( 1134735685), INT32_C( 1430356381), INT32_C(-1110068455),
1161                             INT32_C( -207240031), INT32_C(-1649179267), INT32_C( 2054398444), INT32_C( -483586503),
1162                             INT32_C(  223952317), INT32_C(  282198336), INT32_C(  564965997), INT32_C(  169645898),
1163                             INT32_C( 1042470181), INT32_C( 1827473477), INT32_C(  298546792), INT32_C(-1630396605)),
1164       simde_mm512_set_epi32(INT32_C(-1539616610), INT32_C( 1134735685), INT32_C( 1430356381), INT32_C(-1110068455),
1165                             INT32_C(  223952317), INT32_C(  282198336), INT32_C(  564965997), INT32_C(  169645898),
1166                             INT32_C(-1481960002), INT32_C(  861125508), INT32_C( -330381203), INT32_C(-1999224530),
1167                             INT32_C( 1042470181), INT32_C( 1827473477), INT32_C(  298546792), INT32_C(-1630396605)),
1168       simde_mm512_set_epi32(INT32_C(  223952317), INT32_C(  282198336), INT32_C(  564965997), INT32_C(  169645898),
1169                             INT32_C( -207240031), INT32_C(-1649179267), INT32_C( 2054398444), INT32_C( -483586503),
1170                             INT32_C(-1481960002), INT32_C(  861125508), INT32_C( -330381203), INT32_C(-1999224530),
1171                             INT32_C( 1042470181), INT32_C( 1827473477), INT32_C(  298546792), INT32_C(-1630396605)) },
1172     { simde_mm512_set_epi32(INT32_C( 2066979701), INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359),
1173                             INT32_C( 1519671047), INT32_C(-1017461983), INT32_C(  353198331), INT32_C( 1711460779),
1174                             INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043), INT32_C( -790242624),
1175                             INT32_C(-1094331335), INT32_C(-1166320093), INT32_C(-2045280751), INT32_C(-2037261521)),
1176       simde_mm_set_epi32(INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741)),
1177       simde_mm512_set_epi32(INT32_C( 2066979701), INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359),
1178                             INT32_C( 1519671047), INT32_C(-1017461983), INT32_C(  353198331), INT32_C( 1711460779),
1179                             INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043), INT32_C( -790242624),
1180                             INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741)),
1181       simde_mm512_set_epi32(INT32_C( 2066979701), INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359),
1182                             INT32_C( 1519671047), INT32_C(-1017461983), INT32_C(  353198331), INT32_C( 1711460779),
1183                             INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741),
1184                             INT32_C(-1094331335), INT32_C(-1166320093), INT32_C(-2045280751), INT32_C(-2037261521)),
1185       simde_mm512_set_epi32(INT32_C( 2066979701), INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359),
1186                             INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741),
1187                             INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043), INT32_C( -790242624),
1188                             INT32_C(-1094331335), INT32_C(-1166320093), INT32_C(-2045280751), INT32_C(-2037261521)),
1189       simde_mm512_set_epi32(INT32_C( -605945909), INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741),
1190                             INT32_C( 1519671047), INT32_C(-1017461983), INT32_C(  353198331), INT32_C( 1711460779),
1191                             INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043), INT32_C( -790242624),
1192                             INT32_C(-1094331335), INT32_C(-1166320093), INT32_C(-2045280751), INT32_C(-2037261521)) },
1193     { simde_mm512_set_epi32(INT32_C(  533478787), INT32_C(  907615417), INT32_C( -199229058), INT32_C(  -91537812),
1194                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C( 1688468565), INT32_C(  736544549),
1195                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C( 1720852541), INT32_C(-1423023772),
1196                             INT32_C(-1185448755), INT32_C( 1549802795), INT32_C(  159583350), INT32_C(  548883180)),
1197       simde_mm_set_epi32(INT32_C(  513515868), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027)),
1198       simde_mm512_set_epi32(INT32_C(  533478787), INT32_C(  907615417), INT32_C( -199229058), INT32_C(  -91537812),
1199                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C( 1688468565), INT32_C(  736544549),
1200                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C( 1720852541), INT32_C(-1423023772),
1201                             INT32_C(  513515868), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027)),
1202       simde_mm512_set_epi32(INT32_C(  533478787), INT32_C(  907615417), INT32_C( -199229058), INT32_C(  -91537812),
1203                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C( 1688468565), INT32_C(  736544549),
1204                             INT32_C(  513515868), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027),
1205                             INT32_C(-1185448755), INT32_C( 1549802795), INT32_C(  159583350), INT32_C(  548883180)),
1206       simde_mm512_set_epi32(INT32_C(  533478787), INT32_C(  907615417), INT32_C( -199229058), INT32_C(  -91537812),
1207                             INT32_C(  513515868), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027),
1208                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C( 1720852541), INT32_C(-1423023772),
1209                             INT32_C(-1185448755), INT32_C( 1549802795), INT32_C(  159583350), INT32_C(  548883180)),
1210       simde_mm512_set_epi32(INT32_C(  513515868), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027),
1211                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C( 1688468565), INT32_C(  736544549),
1212                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C( 1720852541), INT32_C(-1423023772),
1213                             INT32_C(-1185448755), INT32_C( 1549802795), INT32_C(  159583350), INT32_C(  548883180)) },
1214     { simde_mm512_set_epi32(INT32_C(  503748315), INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621),
1215                             INT32_C( -646247370), INT32_C( 1258747662), INT32_C( 1838830023), INT32_C( -532007659),
1216                             INT32_C( -622852205), INT32_C( -839037220), INT32_C(  499633910), INT32_C( -260167255),
1217                             INT32_C(  884163960), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350)),
1218       simde_mm_set_epi32(INT32_C(-1569831145), INT32_C(  338985942), INT32_C( 1701079465), INT32_C( -195770682)),
1219       simde_mm512_set_epi32(INT32_C(  503748315), INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621),
1220                             INT32_C( -646247370), INT32_C( 1258747662), INT32_C( 1838830023), INT32_C( -532007659),
1221                             INT32_C( -622852205), INT32_C( -839037220), INT32_C(  499633910), INT32_C( -260167255),
1222                             INT32_C(-1569831145), INT32_C(  338985942), INT32_C( 1701079465), INT32_C( -195770682)),
1223       simde_mm512_set_epi32(INT32_C(  503748315), INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621),
1224                             INT32_C( -646247370), INT32_C( 1258747662), INT32_C( 1838830023), INT32_C( -532007659),
1225                             INT32_C(-1569831145), INT32_C(  338985942), INT32_C( 1701079465), INT32_C( -195770682),
1226                             INT32_C(  884163960), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350)),
1227       simde_mm512_set_epi32(INT32_C(  503748315), INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621),
1228                             INT32_C(-1569831145), INT32_C(  338985942), INT32_C( 1701079465), INT32_C( -195770682),
1229                             INT32_C( -622852205), INT32_C( -839037220), INT32_C(  499633910), INT32_C( -260167255),
1230                             INT32_C(  884163960), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350)),
1231       simde_mm512_set_epi32(INT32_C(-1569831145), INT32_C(  338985942), INT32_C( 1701079465), INT32_C( -195770682),
1232                             INT32_C( -646247370), INT32_C( 1258747662), INT32_C( 1838830023), INT32_C( -532007659),
1233                             INT32_C( -622852205), INT32_C( -839037220), INT32_C(  499633910), INT32_C( -260167255),
1234                             INT32_C(  884163960), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350)) },
1235     { simde_mm512_set_epi32(INT32_C( 1526367108), INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023),
1236                             INT32_C( 1239606494), INT32_C(  -22119232), INT32_C( 1216907749), INT32_C(  654527510),
1237                             INT32_C(-2043358500), INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075),
1238                             INT32_C(  386072301), INT32_C(-1628984154), INT32_C(   87817524), INT32_C( 1219490517)),
1239       simde_mm_set_epi32(INT32_C(-1101477862), INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738)),
1240       simde_mm512_set_epi32(INT32_C( 1526367108), INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023),
1241                             INT32_C( 1239606494), INT32_C(  -22119232), INT32_C( 1216907749), INT32_C(  654527510),
1242                             INT32_C(-2043358500), INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075),
1243                             INT32_C(-1101477862), INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738)),
1244       simde_mm512_set_epi32(INT32_C( 1526367108), INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023),
1245                             INT32_C( 1239606494), INT32_C(  -22119232), INT32_C( 1216907749), INT32_C(  654527510),
1246                             INT32_C(-1101477862), INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738),
1247                             INT32_C(  386072301), INT32_C(-1628984154), INT32_C(   87817524), INT32_C( 1219490517)),
1248       simde_mm512_set_epi32(INT32_C( 1526367108), INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023),
1249                             INT32_C(-1101477862), INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738),
1250                             INT32_C(-2043358500), INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075),
1251                             INT32_C(  386072301), INT32_C(-1628984154), INT32_C(   87817524), INT32_C( 1219490517)),
1252       simde_mm512_set_epi32(INT32_C(-1101477862), INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738),
1253                             INT32_C( 1239606494), INT32_C(  -22119232), INT32_C( 1216907749), INT32_C(  654527510),
1254                             INT32_C(-2043358500), INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075),
1255                             INT32_C(  386072301), INT32_C(-1628984154), INT32_C(   87817524), INT32_C( 1219490517)) },
1256     { simde_mm512_set_epi32(INT32_C( 2082954477), INT32_C( 1254960767), INT32_C( 1995459397), INT32_C(  -11572946),
1257                             INT32_C(-1087388220), INT32_C(  730787370), INT32_C(-2034110695), INT32_C(-1088138491),
1258                             INT32_C( -353174912), INT32_C( -362301616), INT32_C(  617951303), INT32_C(  817116152),
1259                             INT32_C(-1034835761), INT32_C( -102069057), INT32_C( 1774242298), INT32_C( 1089620040)),
1260       simde_mm_set_epi32(INT32_C(  159429100), INT32_C(  451955897), INT32_C(  181201098), INT32_C(  450627934)),
1261       simde_mm512_set_epi32(INT32_C( 2082954477), INT32_C( 1254960767), INT32_C( 1995459397), INT32_C(  -11572946),
1262                             INT32_C(-1087388220), INT32_C(  730787370), INT32_C(-2034110695), INT32_C(-1088138491),
1263                             INT32_C( -353174912), INT32_C( -362301616), INT32_C(  617951303), INT32_C(  817116152),
1264                             INT32_C(  159429100), INT32_C(  451955897), INT32_C(  181201098), INT32_C(  450627934)),
1265       simde_mm512_set_epi32(INT32_C( 2082954477), INT32_C( 1254960767), INT32_C( 1995459397), INT32_C(  -11572946),
1266                             INT32_C(-1087388220), INT32_C(  730787370), INT32_C(-2034110695), INT32_C(-1088138491),
1267                             INT32_C(  159429100), INT32_C(  451955897), INT32_C(  181201098), INT32_C(  450627934),
1268                             INT32_C(-1034835761), INT32_C( -102069057), INT32_C( 1774242298), INT32_C( 1089620040)),
1269       simde_mm512_set_epi32(INT32_C( 2082954477), INT32_C( 1254960767), INT32_C( 1995459397), INT32_C(  -11572946),
1270                             INT32_C(  159429100), INT32_C(  451955897), INT32_C(  181201098), INT32_C(  450627934),
1271                             INT32_C( -353174912), INT32_C( -362301616), INT32_C(  617951303), INT32_C(  817116152),
1272                             INT32_C(-1034835761), INT32_C( -102069057), INT32_C( 1774242298), INT32_C( 1089620040)),
1273       simde_mm512_set_epi32(INT32_C(  159429100), INT32_C(  451955897), INT32_C(  181201098), INT32_C(  450627934),
1274                             INT32_C(-1087388220), INT32_C(  730787370), INT32_C(-2034110695), INT32_C(-1088138491),
1275                             INT32_C( -353174912), INT32_C( -362301616), INT32_C(  617951303), INT32_C(  817116152),
1276                             INT32_C(-1034835761), INT32_C( -102069057), INT32_C( 1774242298), INT32_C( 1089620040)) },
1277     { simde_mm512_set_epi32(INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1278                             INT32_C(-1010527612), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677),
1279                             INT32_C(-1544325740), INT32_C(  204417556), INT32_C(-1329665093), INT32_C(-2039025377),
1280                             INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275)),
1281       simde_mm_set_epi32(INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776)),
1282       simde_mm512_set_epi32(INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1283                             INT32_C(-1010527612), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677),
1284                             INT32_C(-1544325740), INT32_C(  204417556), INT32_C(-1329665093), INT32_C(-2039025377),
1285                             INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776)),
1286       simde_mm512_set_epi32(INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1287                             INT32_C(-1010527612), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677),
1288                             INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776),
1289                             INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275)),
1290       simde_mm512_set_epi32(INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1291                             INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776),
1292                             INT32_C(-1544325740), INT32_C(  204417556), INT32_C(-1329665093), INT32_C(-2039025377),
1293                             INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275)),
1294       simde_mm512_set_epi32(INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776),
1295                             INT32_C(-1010527612), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677),
1296                             INT32_C(-1544325740), INT32_C(  204417556), INT32_C(-1329665093), INT32_C(-2039025377),
1297                             INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275)) },
1298   };
1299 
1300   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
1301     simde__m512i r;
1302     r = simde_mm512_inserti32x4(test_vec[i].a, test_vec[i].b, 0);
1303     simde_assert_m512i_i32(r, ==, test_vec[i].r0);
1304     r = simde_mm512_inserti32x4(test_vec[i].a, test_vec[i].b, 1);
1305     simde_assert_m512i_i32(r, ==, test_vec[i].r1);
1306     r = simde_mm512_inserti32x4(test_vec[i].a, test_vec[i].b, 2);
1307     simde_assert_m512i_i32(r, ==, test_vec[i].r2);
1308     r = simde_mm512_inserti32x4(test_vec[i].a, test_vec[i].b, 3);
1309     simde_assert_m512i_i32(r, ==, test_vec[i].r3);
1310   }
1311 
1312   return 0;
1313 }
1314 
1315 static int
test_simde_mm512_mask_inserti32x4(SIMDE_MUNIT_TEST_ARGS)1316 test_simde_mm512_mask_inserti32x4(SIMDE_MUNIT_TEST_ARGS) {
1317   const struct {
1318     simde__m512i src;
1319     simde__mmask16 k;
1320     simde__m512i a;
1321     simde__m128i b;
1322     simde__m512i r0;
1323     simde__m512i r1;
1324     simde__m512i r2;
1325     simde__m512i r3;
1326   } test_vec[8] = {
1327     { simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C(-1801776439), INT32_C(  145438126), INT32_C(-1306064352),
1328                             INT32_C( -858736392), INT32_C(  923442479), INT32_C( 1092805562), INT32_C( 1443901717),
1329                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932), INT32_C(-1302383354),
1330                             INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201), INT32_C( 1856459607)),
1331       UINT16_C(27455),
1332       simde_mm512_set_epi32(INT32_C(-1110068455), INT32_C( -207240031), INT32_C(-1649179267), INT32_C( 2054398444),
1333                             INT32_C( -483586503), INT32_C(-1481960002), INT32_C(  861125508), INT32_C( -330381203),
1334                             INT32_C(-1999224530), INT32_C( 1042470181), INT32_C( 1827473477), INT32_C(  298546792),
1335                             INT32_C(-1630396605), INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754)),
1336       simde_mm_set_epi32(INT32_C(  169645898), INT32_C(-1539616610), INT32_C( 1134735685), INT32_C( 1430356381)),
1337       simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C( -207240031), INT32_C(-1649179267), INT32_C(-1306064352),
1338                             INT32_C( -483586503), INT32_C(  923442479), INT32_C(  861125508), INT32_C( -330381203),
1339                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1827473477), INT32_C(  298546792),
1340                             INT32_C(  169645898), INT32_C(-1539616610), INT32_C( 1134735685), INT32_C( 1430356381)),
1341       simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C( -207240031), INT32_C(-1649179267), INT32_C(-1306064352),
1342                             INT32_C( -483586503), INT32_C(  923442479), INT32_C(  861125508), INT32_C( -330381203),
1343                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1134735685), INT32_C( 1430356381),
1344                             INT32_C(-1630396605), INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754)),
1345       simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C( -207240031), INT32_C(-1649179267), INT32_C(-1306064352),
1346                             INT32_C(  169645898), INT32_C(  923442479), INT32_C( 1134735685), INT32_C( 1430356381),
1347                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1827473477), INT32_C(  298546792),
1348                             INT32_C(-1630396605), INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754)),
1349       simde_mm512_set_epi32(INT32_C(-1026363374), INT32_C(-1539616610), INT32_C( 1134735685), INT32_C(-1306064352),
1350                             INT32_C( -483586503), INT32_C(  923442479), INT32_C(  861125508), INT32_C( -330381203),
1351                             INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1827473477), INT32_C(  298546792),
1352                             INT32_C(-1630396605), INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754)) },
1353     { simde_mm512_set_epi32(INT32_C( -340318359), INT32_C( 1519671047), INT32_C(-1017461983), INT32_C(  353198331),
1354                             INT32_C( 1711460779), INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043),
1355                             INT32_C( -790242624), INT32_C(-1094331335), INT32_C(-1166320093), INT32_C(-2045280751),
1356                             INT32_C(-2037261521), INT32_C(  223952317), INT32_C(  282198336), INT32_C(  564965997)),
1357       UINT16_C(63697),
1358       simde_mm512_set_epi32(INT32_C( 1688468565), INT32_C(  736544549), INT32_C(-1282057552), INT32_C(  795925067),
1359                             INT32_C( 1720852541), INT32_C(-1423023772), INT32_C(-1185448755), INT32_C( 1549802795),
1360                             INT32_C(  159583350), INT32_C(  548883180), INT32_C( -605945909), INT32_C(-2063050181),
1361                             INT32_C( 1095467003), INT32_C(-2083755741), INT32_C( 2066979701), INT32_C( 1094609712)),
1362       simde_mm_set_epi32(INT32_C( -199229058), INT32_C(  -91537812), INT32_C( 1375258232), INT32_C(  139748399)),
1363       simde_mm512_set_epi32(INT32_C( 1688468565), INT32_C(  736544549), INT32_C(-1282057552), INT32_C(  795925067),
1364                             INT32_C( 1720852541), INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043),
1365                             INT32_C(  159583350), INT32_C(  548883180), INT32_C(-1166320093), INT32_C(-2063050181),
1366                             INT32_C(-2037261521), INT32_C(  223952317), INT32_C(  282198336), INT32_C(  139748399)),
1367       simde_mm512_set_epi32(INT32_C( 1688468565), INT32_C(  736544549), INT32_C(-1282057552), INT32_C(  795925067),
1368                             INT32_C( 1720852541), INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043),
1369                             INT32_C( -199229058), INT32_C(  -91537812), INT32_C(-1166320093), INT32_C(  139748399),
1370                             INT32_C(-2037261521), INT32_C(  223952317), INT32_C(  282198336), INT32_C( 1094609712)),
1371       simde_mm512_set_epi32(INT32_C( 1688468565), INT32_C(  736544549), INT32_C(-1282057552), INT32_C(  795925067),
1372                             INT32_C( -199229058), INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043),
1373                             INT32_C(  159583350), INT32_C(  548883180), INT32_C(-1166320093), INT32_C(-2063050181),
1374                             INT32_C(-2037261521), INT32_C(  223952317), INT32_C(  282198336), INT32_C( 1094609712)),
1375       simde_mm512_set_epi32(INT32_C( -199229058), INT32_C(  -91537812), INT32_C( 1375258232), INT32_C(  139748399),
1376                             INT32_C( 1720852541), INT32_C( -919570191), INT32_C( 1974152373), INT32_C( -695949043),
1377                             INT32_C(  159583350), INT32_C(  548883180), INT32_C(-1166320093), INT32_C(-2063050181),
1378                             INT32_C(-2037261521), INT32_C(  223952317), INT32_C(  282198336), INT32_C( 1094609712)) },
1379     { simde_mm512_set_epi32(INT32_C( 1838830023), INT32_C( -532007659), INT32_C( -622852205), INT32_C( -839037220),
1380                             INT32_C(  499633910), INT32_C( -260167255), INT32_C(  884163960), INT32_C( -329275629),
1381                             INT32_C( -888441293), INT32_C( -707551350), INT32_C(  513515868), INT32_C(-1825967755),
1382                             INT32_C(  822222164), INT32_C(-1689559027), INT32_C(  533478787), INT32_C(  907615417)),
1383       UINT16_C(63246),
1384       simde_mm512_set_epi32(INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075), INT32_C(  386072301),
1385                             INT32_C(-1628984154), INT32_C(   87817524), INT32_C( 1219490517), INT32_C(-1569831145),
1386                             INT32_C(  338985942), INT32_C( 1701079465), INT32_C( -195770682), INT32_C(  503748315),
1387                             INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621), INT32_C( -646247370)),
1388       simde_mm_set_epi32(INT32_C(  -22119232), INT32_C( 1216907749), INT32_C(  654527510), INT32_C(-2043358500)),
1389       simde_mm512_set_epi32(INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075), INT32_C(  386072301),
1390                             INT32_C(  499633910), INT32_C(   87817524), INT32_C( 1219490517), INT32_C(-1569831145),
1391                             INT32_C( -888441293), INT32_C( -707551350), INT32_C(  513515868), INT32_C(-1825967755),
1392                             INT32_C(  -22119232), INT32_C( 1216907749), INT32_C(  654527510), INT32_C(  907615417)),
1393       simde_mm512_set_epi32(INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075), INT32_C(  386072301),
1394                             INT32_C(  499633910), INT32_C(   87817524), INT32_C( 1219490517), INT32_C(-1569831145),
1395                             INT32_C( -888441293), INT32_C( -707551350), INT32_C(  513515868), INT32_C(-1825967755),
1396                             INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621), INT32_C(  907615417)),
1397       simde_mm512_set_epi32(INT32_C(  459072440), INT32_C( -430427651), INT32_C( -272088075), INT32_C(  386072301),
1398                             INT32_C(  499633910), INT32_C( 1216907749), INT32_C(  654527510), INT32_C(-2043358500),
1399                             INT32_C( -888441293), INT32_C( -707551350), INT32_C(  513515868), INT32_C(-1825967755),
1400                             INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621), INT32_C(  907615417)),
1401       simde_mm512_set_epi32(INT32_C(  -22119232), INT32_C( 1216907749), INT32_C(  654527510), INT32_C(-2043358500),
1402                             INT32_C(  499633910), INT32_C(   87817524), INT32_C( 1219490517), INT32_C(-1569831145),
1403                             INT32_C( -888441293), INT32_C( -707551350), INT32_C(  513515868), INT32_C(-1825967755),
1404                             INT32_C( 1469355417), INT32_C(-1849349632), INT32_C( 1962664621), INT32_C(  907615417)) },
1405     { simde_mm512_set_epi32(INT32_C( -362301616), INT32_C(  617951303), INT32_C(  817116152), INT32_C(-1034835761),
1406                             INT32_C( -102069057), INT32_C( 1774242298), INT32_C( 1089620040), INT32_C(-1101477862),
1407                             INT32_C( 2001101785), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108),
1408                             INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494)),
1409       UINT16_C(64128),
1410       simde_mm512_set_epi32(INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275),
1411                             INT32_C(  159429100), INT32_C(  451955897), INT32_C(  181201098), INT32_C(  450627934),
1412                             INT32_C( 2082954477), INT32_C( 1254960767), INT32_C( 1995459397), INT32_C(  -11572946),
1413                             INT32_C(-1087388220), INT32_C(  730787370), INT32_C(-2034110695), INT32_C(-1088138491)),
1414       simde_mm_set_epi32(INT32_C(-1544325740), INT32_C(  204417556), INT32_C(-1329665093), INT32_C(-2039025377)),
1415       simde_mm512_set_epi32(INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275),
1416                             INT32_C(  159429100), INT32_C( 1774242298), INT32_C(  181201098), INT32_C(-1101477862),
1417                             INT32_C( 2082954477), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108),
1418                             INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494)),
1419       simde_mm512_set_epi32(INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275),
1420                             INT32_C(  159429100), INT32_C( 1774242298), INT32_C(  181201098), INT32_C(-1101477862),
1421                             INT32_C(-1544325740), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108),
1422                             INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494)),
1423       simde_mm512_set_epi32(INT32_C( 1639231015), INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275),
1424                             INT32_C(-1544325740), INT32_C( 1774242298), INT32_C(-1329665093), INT32_C(-1101477862),
1425                             INT32_C( 2082954477), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108),
1426                             INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494)),
1427       simde_mm512_set_epi32(INT32_C(-1544325740), INT32_C(  204417556), INT32_C(-1329665093), INT32_C(-2039025377),
1428                             INT32_C(  159429100), INT32_C( 1774242298), INT32_C(  181201098), INT32_C(-1101477862),
1429                             INT32_C( 2082954477), INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108),
1430                             INT32_C(  722122834), INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494)) },
1431     { simde_mm512_set_epi32(INT32_C( 1313258175), INT32_C( 1928049651), INT32_C(  765730488), INT32_C(  -85899231),
1432                             INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776),
1433                             INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1434                             INT32_C(-1010527612), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677)),
1435       UINT16_C(52232),
1436       simde_mm512_set_epi32(INT32_C( -181070601), INT32_C( 1463729035), INT32_C( 2031968571), INT32_C(  333434400),
1437                             INT32_C( -637142874), INT32_C( -520435756), INT32_C( -148623413), INT32_C( -692754616),
1438                             INT32_C(-1908406411), INT32_C( 1391053429), INT32_C( 1767908668), INT32_C( 1117151413),
1439                             INT32_C( 1466854108), INT32_C( -852914371), INT32_C( -773785464), INT32_C(-2142007253)),
1440       simde_mm_set_epi32(INT32_C(  712044568), INT32_C( 1641785760), INT32_C( 1696516135), INT32_C(-1123374630)),
1441       simde_mm512_set_epi32(INT32_C( -181070601), INT32_C( 1463729035), INT32_C(  765730488), INT32_C(  -85899231),
1442                             INT32_C( -637142874), INT32_C( -520435756), INT32_C(-1991433794), INT32_C( 1298943776),
1443                             INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1444                             INT32_C(  712044568), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677)),
1445       simde_mm512_set_epi32(INT32_C( -181070601), INT32_C( 1463729035), INT32_C(  765730488), INT32_C(  -85899231),
1446                             INT32_C( -637142874), INT32_C( -520435756), INT32_C(-1991433794), INT32_C( 1298943776),
1447                             INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1448                             INT32_C( 1466854108), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677)),
1449       simde_mm512_set_epi32(INT32_C( -181070601), INT32_C( 1463729035), INT32_C(  765730488), INT32_C(  -85899231),
1450                             INT32_C(  712044568), INT32_C( 1641785760), INT32_C(-1991433794), INT32_C( 1298943776),
1451                             INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1452                             INT32_C( 1466854108), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677)),
1453       simde_mm512_set_epi32(INT32_C(  712044568), INT32_C( 1641785760), INT32_C(  765730488), INT32_C(  -85899231),
1454                             INT32_C( -637142874), INT32_C( -520435756), INT32_C(-1991433794), INT32_C( 1298943776),
1455                             INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1456                             INT32_C( 1466854108), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677)) },
1457     { simde_mm512_set_epi32(INT32_C( -539592973), INT32_C(-1402526875), INT32_C(   -8263463), INT32_C(  478788156),
1458                             INT32_C(  842200487), INT32_C( -811849174), INT32_C(-1510825074), INT32_C( 1897985966),
1459                             INT32_C( 1445172644), INT32_C( -193622280), INT32_C( 2097959091), INT32_C( -652080500),
1460                             INT32_C( 1943026961), INT32_C(  763848022), INT32_C(-2124387583), INT32_C(-1102663841)),
1461       UINT16_C(53796),
1462       simde_mm512_set_epi32(INT32_C(-1268587914), INT32_C( 1939823644), INT32_C(-1112752789), INT32_C( 2052878307),
1463                             INT32_C( -856056848), INT32_C(-1218860495), INT32_C(  729621709), INT32_C(-1241407128),
1464                             INT32_C(  696721321), INT32_C( -603523965), INT32_C( 1730687689), INT32_C(  290786615),
1465                             INT32_C(-1827031380), INT32_C( 1429317129), INT32_C(-1800615955), INT32_C( -728999228)),
1466       simde_mm_set_epi32(INT32_C( -549528402), INT32_C( -323547130), INT32_C(-1395624565), INT32_C(-1905505546)),
1467       simde_mm512_set_epi32(INT32_C(-1268587914), INT32_C( 1939823644), INT32_C(   -8263463), INT32_C( 2052878307),
1468                             INT32_C(  842200487), INT32_C( -811849174), INT32_C(  729621709), INT32_C( 1897985966),
1469                             INT32_C( 1445172644), INT32_C( -193622280), INT32_C( 1730687689), INT32_C( -652080500),
1470                             INT32_C( 1943026961), INT32_C( -323547130), INT32_C(-2124387583), INT32_C(-1102663841)),
1471       simde_mm512_set_epi32(INT32_C(-1268587914), INT32_C( 1939823644), INT32_C(   -8263463), INT32_C( 2052878307),
1472                             INT32_C(  842200487), INT32_C( -811849174), INT32_C(  729621709), INT32_C( 1897985966),
1473                             INT32_C( 1445172644), INT32_C( -193622280), INT32_C(-1395624565), INT32_C( -652080500),
1474                             INT32_C( 1943026961), INT32_C( 1429317129), INT32_C(-2124387583), INT32_C(-1102663841)),
1475       simde_mm512_set_epi32(INT32_C(-1268587914), INT32_C( 1939823644), INT32_C(   -8263463), INT32_C( 2052878307),
1476                             INT32_C(  842200487), INT32_C( -811849174), INT32_C(-1395624565), INT32_C( 1897985966),
1477                             INT32_C( 1445172644), INT32_C( -193622280), INT32_C( 1730687689), INT32_C( -652080500),
1478                             INT32_C( 1943026961), INT32_C( 1429317129), INT32_C(-2124387583), INT32_C(-1102663841)),
1479       simde_mm512_set_epi32(INT32_C( -549528402), INT32_C( -323547130), INT32_C(   -8263463), INT32_C(-1905505546),
1480                             INT32_C(  842200487), INT32_C( -811849174), INT32_C(  729621709), INT32_C( 1897985966),
1481                             INT32_C( 1445172644), INT32_C( -193622280), INT32_C( 1730687689), INT32_C( -652080500),
1482                             INT32_C( 1943026961), INT32_C( 1429317129), INT32_C(-2124387583), INT32_C(-1102663841)) },
1483     { simde_mm512_set_epi32(INT32_C(-1884003639), INT32_C( -638430290), INT32_C(-2007622482), INT32_C(  171336877),
1484                             INT32_C(   59553613), INT32_C(  165266600), INT32_C( -798384264), INT32_C( 1607584815),
1485                             INT32_C(-1324336584), INT32_C(-1668086905), INT32_C( -770469750), INT32_C( 1013231130),
1486                             INT32_C(  543156562), INT32_C( -399740514), INT32_C(  509655415), INT32_C( -160537509)),
1487       UINT16_C(22542),
1488       simde_mm512_set_epi32(INT32_C( -364563113), INT32_C( 1520783126), INT32_C( -207159885), INT32_C( -104006691),
1489                             INT32_C(  362759403), INT32_C(-1562242573), INT32_C( -397133039), INT32_C(  568974515),
1490                             INT32_C(-1726442446), INT32_C(-2134949944), INT32_C( 1969107101), INT32_C(-2063427243),
1491                             INT32_C( -670405092), INT32_C(-1879729053), INT32_C( 1035482990), INT32_C( 1183910939)),
1492       simde_mm_set_epi32(INT32_C( -521443925), INT32_C(-1464291783), INT32_C(-1686112999), INT32_C(-1290233716)),
1493       simde_mm512_set_epi32(INT32_C(-1884003639), INT32_C( 1520783126), INT32_C(-2007622482), INT32_C( -104006691),
1494                             INT32_C(  362759403), INT32_C(  165266600), INT32_C( -798384264), INT32_C( 1607584815),
1495                             INT32_C(-1324336584), INT32_C(-1668086905), INT32_C( -770469750), INT32_C( 1013231130),
1496                             INT32_C( -521443925), INT32_C(-1464291783), INT32_C(-1686112999), INT32_C( -160537509)),
1497       simde_mm512_set_epi32(INT32_C(-1884003639), INT32_C( 1520783126), INT32_C(-2007622482), INT32_C( -104006691),
1498                             INT32_C(  362759403), INT32_C(  165266600), INT32_C( -798384264), INT32_C( 1607584815),
1499                             INT32_C(-1324336584), INT32_C(-1668086905), INT32_C( -770469750), INT32_C( 1013231130),
1500                             INT32_C( -670405092), INT32_C(-1879729053), INT32_C( 1035482990), INT32_C( -160537509)),
1501       simde_mm512_set_epi32(INT32_C(-1884003639), INT32_C( 1520783126), INT32_C(-2007622482), INT32_C( -104006691),
1502                             INT32_C( -521443925), INT32_C(  165266600), INT32_C( -798384264), INT32_C( 1607584815),
1503                             INT32_C(-1324336584), INT32_C(-1668086905), INT32_C( -770469750), INT32_C( 1013231130),
1504                             INT32_C( -670405092), INT32_C(-1879729053), INT32_C( 1035482990), INT32_C( -160537509)),
1505       simde_mm512_set_epi32(INT32_C(-1884003639), INT32_C(-1464291783), INT32_C(-2007622482), INT32_C(-1290233716),
1506                             INT32_C(  362759403), INT32_C(  165266600), INT32_C( -798384264), INT32_C( 1607584815),
1507                             INT32_C(-1324336584), INT32_C(-1668086905), INT32_C( -770469750), INT32_C( 1013231130),
1508                             INT32_C( -670405092), INT32_C(-1879729053), INT32_C( 1035482990), INT32_C( -160537509)) },
1509     { simde_mm512_set_epi32(INT32_C(-1383827159), INT32_C( 1804875719), INT32_C( 1179452315), INT32_C(-1509656190),
1510                             INT32_C(-1409992701), INT32_C(-1830359468), INT32_C(  635753031), INT32_C(  310246197),
1511                             INT32_C(-1783943034), INT32_C(-1307643183), INT32_C( -144888334), INT32_C(  621611179),
1512                             INT32_C(  743650285), INT32_C( 1845744981), INT32_C(-1349190316), INT32_C(-1403674818)),
1513       UINT16_C( 4521),
1514       simde_mm512_set_epi32(INT32_C( 1055036471), INT32_C(  351897115), INT32_C( 1594003471), INT32_C(-1709813294),
1515                             INT32_C( -133653364), INT32_C(  -51462036), INT32_C(   46796230), INT32_C(  989301899),
1516                             INT32_C( -691937914), INT32_C( 1667629581), INT32_C( -496700661), INT32_C(-1318801755),
1517                             INT32_C( 1076515270), INT32_C(-1757573505), INT32_C(-1929379353), INT32_C( -560036292)),
1518       simde_mm_set_epi32(INT32_C(-1293286075), INT32_C(-1398303881), INT32_C(-2094713086), INT32_C(  197529411)),
1519       simde_mm512_set_epi32(INT32_C(-1383827159), INT32_C( 1804875719), INT32_C( 1179452315), INT32_C(-1709813294),
1520                             INT32_C(-1409992701), INT32_C(-1830359468), INT32_C(  635753031), INT32_C(  989301899),
1521                             INT32_C( -691937914), INT32_C(-1307643183), INT32_C( -496700661), INT32_C(  621611179),
1522                             INT32_C(-1293286075), INT32_C( 1845744981), INT32_C(-1349190316), INT32_C(  197529411)),
1523       simde_mm512_set_epi32(INT32_C(-1383827159), INT32_C( 1804875719), INT32_C( 1179452315), INT32_C(-1709813294),
1524                             INT32_C(-1409992701), INT32_C(-1830359468), INT32_C(  635753031), INT32_C(  989301899),
1525                             INT32_C(-1293286075), INT32_C(-1307643183), INT32_C(-2094713086), INT32_C(  621611179),
1526                             INT32_C( 1076515270), INT32_C( 1845744981), INT32_C(-1349190316), INT32_C( -560036292)),
1527       simde_mm512_set_epi32(INT32_C(-1383827159), INT32_C( 1804875719), INT32_C( 1179452315), INT32_C(-1709813294),
1528                             INT32_C(-1409992701), INT32_C(-1830359468), INT32_C(  635753031), INT32_C(  197529411),
1529                             INT32_C( -691937914), INT32_C(-1307643183), INT32_C( -496700661), INT32_C(  621611179),
1530                             INT32_C( 1076515270), INT32_C( 1845744981), INT32_C(-1349190316), INT32_C( -560036292)),
1531       simde_mm512_set_epi32(INT32_C(-1383827159), INT32_C( 1804875719), INT32_C( 1179452315), INT32_C(  197529411),
1532                             INT32_C(-1409992701), INT32_C(-1830359468), INT32_C(  635753031), INT32_C(  989301899),
1533                             INT32_C( -691937914), INT32_C(-1307643183), INT32_C( -496700661), INT32_C(  621611179),
1534                             INT32_C( 1076515270), INT32_C( 1845744981), INT32_C(-1349190316), INT32_C( -560036292)) },
1535   };
1536 
1537   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
1538     simde__m512i r;
1539     r = simde_mm512_mask_inserti32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
1540     simde_assert_m512i_i32(r, ==, test_vec[i].r0);
1541     r = simde_mm512_mask_inserti32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
1542     simde_assert_m512i_i32(r, ==, test_vec[i].r1);
1543     r = simde_mm512_mask_inserti32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 2);
1544     simde_assert_m512i_i32(r, ==, test_vec[i].r2);
1545     r = simde_mm512_mask_inserti32x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 3);
1546     simde_assert_m512i_i32(r, ==, test_vec[i].r3);
1547   }
1548 
1549   return 0;
1550 }
1551 
1552 static int
test_simde_mm512_maskz_inserti32x4(SIMDE_MUNIT_TEST_ARGS)1553 test_simde_mm512_maskz_inserti32x4(SIMDE_MUNIT_TEST_ARGS) {
1554   const struct {
1555     simde__mmask16 k;
1556     simde__m512i a;
1557     simde__m128i b;
1558     simde__m512i r0;
1559     simde__m512i r1;
1560     simde__m512i r2;
1561     simde__m512i r3;
1562   } test_vec[8] = {
1563     { UINT16_C(21335),
1564       simde_mm512_set_epi32(INT32_C(  951544639), INT32_C(-1026363374), INT32_C(-1801776439), INT32_C(  145438126),
1565                             INT32_C(-1306064352), INT32_C( -858736392), INT32_C(  923442479), INT32_C( 1092805562),
1566                             INT32_C( 1443901717), INT32_C( 1848749100), INT32_C( 1777333881), INT32_C( 1570116932),
1567                             INT32_C(-1302383354), INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201)),
1568       simde_mm_set_epi32(INT32_C(-1630396605), INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754)),
1569       simde_mm512_set_epi32(INT32_C(          0), INT32_C(-1026363374), INT32_C(          0), INT32_C(  145438126),
1570                             INT32_C(          0), INT32_C(          0), INT32_C(  923442479), INT32_C( 1092805562),
1571                             INT32_C(          0), INT32_C( 1848749100), INT32_C(          0), INT32_C( 1570116932),
1572                             INT32_C(          0), INT32_C( 1545554432), INT32_C(  344023940), INT32_C(-1871515754)),
1573       simde_mm512_set_epi32(INT32_C(          0), INT32_C(-1026363374), INT32_C(          0), INT32_C(  145438126),
1574                             INT32_C(          0), INT32_C(          0), INT32_C(  923442479), INT32_C( 1092805562),
1575                             INT32_C(          0), INT32_C( 1545554432), INT32_C(          0), INT32_C(-1871515754),
1576                             INT32_C(          0), INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201)),
1577       simde_mm512_set_epi32(INT32_C(          0), INT32_C(-1026363374), INT32_C(          0), INT32_C(  145438126),
1578                             INT32_C(          0), INT32_C(          0), INT32_C(  344023940), INT32_C(-1871515754),
1579                             INT32_C(          0), INT32_C( 1848749100), INT32_C(          0), INT32_C( 1570116932),
1580                             INT32_C(          0), INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201)),
1581       simde_mm512_set_epi32(INT32_C(          0), INT32_C( 1545554432), INT32_C(          0), INT32_C(-1871515754),
1582                             INT32_C(          0), INT32_C(          0), INT32_C(  923442479), INT32_C( 1092805562),
1583                             INT32_C(          0), INT32_C( 1848749100), INT32_C(          0), INT32_C( 1570116932),
1584                             INT32_C(          0), INT32_C( 1993455974), INT32_C(-2068684593), INT32_C(-1936012201)) },
1585     { UINT16_C(30312),
1586       simde_mm512_set_epi32(INT32_C(  564965997), INT32_C(  169645898), INT32_C(-1539616610), INT32_C( 1134735685),
1587                             INT32_C( 1430356381), INT32_C(-1110068455), INT32_C( -207240031), INT32_C(-1649179267),
1588                             INT32_C( 2054398444), INT32_C( -483586503), INT32_C(-1481960002), INT32_C(  861125508),
1589                             INT32_C( -330381203), INT32_C(-1999224530), INT32_C( 1042470181), INT32_C( 1827473477)),
1590       simde_mm_set_epi32(INT32_C(-2045280751), INT32_C(-2037261521), INT32_C(  223952317), INT32_C(  282198336)),
1591       simde_mm512_set_epi32(INT32_C(          0), INT32_C(  169645898), INT32_C(-1539616610), INT32_C( 1134735685),
1592                             INT32_C(          0), INT32_C(-1110068455), INT32_C( -207240031), INT32_C(          0),
1593                             INT32_C(          0), INT32_C( -483586503), INT32_C(-1481960002), INT32_C(          0),
1594                             INT32_C(-2045280751), INT32_C(          0), INT32_C(          0), INT32_C(          0)),
1595       simde_mm512_set_epi32(INT32_C(          0), INT32_C(  169645898), INT32_C(-1539616610), INT32_C( 1134735685),
1596                             INT32_C(          0), INT32_C(-1110068455), INT32_C( -207240031), INT32_C(          0),
1597                             INT32_C(          0), INT32_C(-2037261521), INT32_C(  223952317), INT32_C(          0),
1598                             INT32_C( -330381203), INT32_C(          0), INT32_C(          0), INT32_C(          0)),
1599       simde_mm512_set_epi32(INT32_C(          0), INT32_C(  169645898), INT32_C(-1539616610), INT32_C( 1134735685),
1600                             INT32_C(          0), INT32_C(-2037261521), INT32_C(  223952317), INT32_C(          0),
1601                             INT32_C(          0), INT32_C( -483586503), INT32_C(-1481960002), INT32_C(          0),
1602                             INT32_C( -330381203), INT32_C(          0), INT32_C(          0), INT32_C(          0)),
1603       simde_mm512_set_epi32(INT32_C(          0), INT32_C(-2037261521), INT32_C(  223952317), INT32_C(  282198336),
1604                             INT32_C(          0), INT32_C(-1110068455), INT32_C( -207240031), INT32_C(          0),
1605                             INT32_C(          0), INT32_C( -483586503), INT32_C(-1481960002), INT32_C(          0),
1606                             INT32_C( -330381203), INT32_C(          0), INT32_C(          0), INT32_C(          0)) },
1607     { UINT16_C(24099),
1608       simde_mm512_set_epi32(INT32_C(-2063050181), INT32_C( 1095467003), INT32_C(-2083755741), INT32_C( 2066979701),
1609                             INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359), INT32_C( 1519671047),
1610                             INT32_C(-1017461983), INT32_C(  353198331), INT32_C( 1711460779), INT32_C( -919570191),
1611                             INT32_C( 1974152373), INT32_C( -695949043), INT32_C( -790242624), INT32_C(-1094331335)),
1612       simde_mm_set_epi32(INT32_C( 1549802795), INT32_C(  159583350), INT32_C(  548883180), INT32_C( -605945909)),
1613       simde_mm512_set_epi32(INT32_C(          0), INT32_C( 1095467003), INT32_C(          0), INT32_C( 2066979701),
1614                             INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359), INT32_C(          0),
1615                             INT32_C(          0), INT32_C(          0), INT32_C( 1711460779), INT32_C(          0),
1616                             INT32_C(          0), INT32_C(          0), INT32_C(  548883180), INT32_C( -605945909)),
1617       simde_mm512_set_epi32(INT32_C(          0), INT32_C( 1095467003), INT32_C(          0), INT32_C( 2066979701),
1618                             INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359), INT32_C(          0),
1619                             INT32_C(          0), INT32_C(          0), INT32_C(  548883180), INT32_C(          0),
1620                             INT32_C(          0), INT32_C(          0), INT32_C( -790242624), INT32_C(-1094331335)),
1621       simde_mm512_set_epi32(INT32_C(          0), INT32_C( 1095467003), INT32_C(          0), INT32_C( 2066979701),
1622                             INT32_C( 1549802795), INT32_C(  159583350), INT32_C(  548883180), INT32_C(          0),
1623                             INT32_C(          0), INT32_C(          0), INT32_C( 1711460779), INT32_C(          0),
1624                             INT32_C(          0), INT32_C(          0), INT32_C( -790242624), INT32_C(-1094331335)),
1625       simde_mm512_set_epi32(INT32_C(          0), INT32_C(  159583350), INT32_C(          0), INT32_C( -605945909),
1626                             INT32_C( 1094609712), INT32_C( 1345059025), INT32_C( -340318359), INT32_C(          0),
1627                             INT32_C(          0), INT32_C(          0), INT32_C( 1711460779), INT32_C(          0),
1628                             INT32_C(          0), INT32_C(          0), INT32_C( -790242624), INT32_C(-1094331335)) },
1629     { UINT16_C(31949),
1630       simde_mm512_set_epi32(INT32_C(  513515868), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027),
1631                             INT32_C(  533478787), INT32_C(  907615417), INT32_C( -199229058), INT32_C(  -91537812),
1632                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C( 1688468565), INT32_C(  736544549),
1633                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C( 1720852541), INT32_C(-1423023772)),
1634       simde_mm_set_epi32(INT32_C(  884163960), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350)),
1635       simde_mm512_set_epi32(INT32_C(          0), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027),
1636                             INT32_C(  533478787), INT32_C(  907615417), INT32_C(          0), INT32_C(          0),
1637                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C(          0), INT32_C(          0),
1638                             INT32_C(  884163960), INT32_C( -329275629), INT32_C(          0), INT32_C( -707551350)),
1639       simde_mm512_set_epi32(INT32_C(          0), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027),
1640                             INT32_C(  533478787), INT32_C(  907615417), INT32_C(          0), INT32_C(          0),
1641                             INT32_C(  884163960), INT32_C( -329275629), INT32_C(          0), INT32_C(          0),
1642                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C(          0), INT32_C(-1423023772)),
1643       simde_mm512_set_epi32(INT32_C(          0), INT32_C(-1825967755), INT32_C(  822222164), INT32_C(-1689559027),
1644                             INT32_C(  884163960), INT32_C( -329275629), INT32_C(          0), INT32_C(          0),
1645                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C(          0), INT32_C(          0),
1646                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C(          0), INT32_C(-1423023772)),
1647       simde_mm512_set_epi32(INT32_C(          0), INT32_C( -329275629), INT32_C( -888441293), INT32_C( -707551350),
1648                             INT32_C(  533478787), INT32_C(  907615417), INT32_C(          0), INT32_C(          0),
1649                             INT32_C( 1375258232), INT32_C(  139748399), INT32_C(          0), INT32_C(          0),
1650                             INT32_C(-1282057552), INT32_C(  795925067), INT32_C(          0), INT32_C(-1423023772)) },
1651     { UINT16_C(10665),
1652       simde_mm512_set_epi32(INT32_C( 1219490517), INT32_C(-1569831145), INT32_C(  338985942), INT32_C( 1701079465),
1653                             INT32_C( -195770682), INT32_C(  503748315), INT32_C( 1469355417), INT32_C(-1849349632),
1654                             INT32_C( 1962664621), INT32_C( -646247370), INT32_C( 1258747662), INT32_C( 1838830023),
1655                             INT32_C( -532007659), INT32_C( -622852205), INT32_C( -839037220), INT32_C(  499633910)),
1656       simde_mm_set_epi32(INT32_C( -272088075), INT32_C(  386072301), INT32_C(-1628984154), INT32_C(   87817524)),
1657       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(  338985942), INT32_C(          0),
1658                             INT32_C( -195770682), INT32_C(          0), INT32_C(          0), INT32_C(-1849349632),
1659                             INT32_C( 1962664621), INT32_C(          0), INT32_C( 1258747662), INT32_C(          0),
1660                             INT32_C( -272088075), INT32_C(          0), INT32_C(          0), INT32_C(   87817524)),
1661       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(  338985942), INT32_C(          0),
1662                             INT32_C( -195770682), INT32_C(          0), INT32_C(          0), INT32_C(-1849349632),
1663                             INT32_C( -272088075), INT32_C(          0), INT32_C(-1628984154), INT32_C(          0),
1664                             INT32_C( -532007659), INT32_C(          0), INT32_C(          0), INT32_C(  499633910)),
1665       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(  338985942), INT32_C(          0),
1666                             INT32_C( -272088075), INT32_C(          0), INT32_C(          0), INT32_C(   87817524),
1667                             INT32_C( 1962664621), INT32_C(          0), INT32_C( 1258747662), INT32_C(          0),
1668                             INT32_C( -532007659), INT32_C(          0), INT32_C(          0), INT32_C(  499633910)),
1669       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(-1628984154), INT32_C(          0),
1670                             INT32_C( -195770682), INT32_C(          0), INT32_C(          0), INT32_C(-1849349632),
1671                             INT32_C( 1962664621), INT32_C(          0), INT32_C( 1258747662), INT32_C(          0),
1672                             INT32_C( -532007659), INT32_C(          0), INT32_C(          0), INT32_C(  499633910)) },
1673     { UINT16_C(12797),
1674       simde_mm512_set_epi32(INT32_C( 1774242298), INT32_C( 1089620040), INT32_C(-1101477862), INT32_C( 2001101785),
1675                             INT32_C(-1759250988), INT32_C( -606254738), INT32_C( 1526367108), INT32_C(  722122834),
1676                             INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494), INT32_C(  -22119232),
1677                             INT32_C( 1216907749), INT32_C(  654527510), INT32_C(-2043358500), INT32_C(  459072440)),
1678       simde_mm_set_epi32(INT32_C(  617951303), INT32_C(  817116152), INT32_C(-1034835761), INT32_C( -102069057)),
1679       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(-1101477862), INT32_C( 2001101785),
1680                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(  722122834),
1681                             INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494), INT32_C(  -22119232),
1682                             INT32_C(  617951303), INT32_C(  817116152), INT32_C(          0), INT32_C( -102069057)),
1683       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(-1101477862), INT32_C( 2001101785),
1684                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(  722122834),
1685                             INT32_C(  617951303), INT32_C(  817116152), INT32_C(-1034835761), INT32_C( -102069057),
1686                             INT32_C( 1216907749), INT32_C(  654527510), INT32_C(          0), INT32_C(  459072440)),
1687       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(-1101477862), INT32_C( 2001101785),
1688                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C( -102069057),
1689                             INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494), INT32_C(  -22119232),
1690                             INT32_C( 1216907749), INT32_C(  654527510), INT32_C(          0), INT32_C(  459072440)),
1691       simde_mm512_set_epi32(INT32_C(          0), INT32_C(          0), INT32_C(-1034835761), INT32_C( -102069057),
1692                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(  722122834),
1693                             INT32_C( -174985661), INT32_C(-1762469023), INT32_C( 1239606494), INT32_C(  -22119232),
1694                             INT32_C( 1216907749), INT32_C(  654527510), INT32_C(          0), INT32_C(  459072440)) },
1695     { UINT16_C(46928),
1696       simde_mm512_set_epi32(INT32_C( 1541217841), INT32_C( 1692413538), INT32_C(  738521275), INT32_C(  159429100),
1697                             INT32_C(  451955897), INT32_C(  181201098), INT32_C(  450627934), INT32_C( 2082954477),
1698                             INT32_C( 1254960767), INT32_C( 1995459397), INT32_C(  -11572946), INT32_C(-1087388220),
1699                             INT32_C(  730787370), INT32_C(-2034110695), INT32_C(-1088138491), INT32_C( -353174912)),
1700       simde_mm_set_epi32(INT32_C(  204417556), INT32_C(-1329665093), INT32_C(-2039025377), INT32_C( 1639231015)),
1701       simde_mm512_set_epi32(INT32_C( 1541217841), INT32_C(          0), INT32_C(  738521275), INT32_C(  159429100),
1702                             INT32_C(          0), INT32_C(  181201098), INT32_C(  450627934), INT32_C( 2082954477),
1703                             INT32_C(          0), INT32_C( 1995459397), INT32_C(          0), INT32_C(-1087388220),
1704                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0)),
1705       simde_mm512_set_epi32(INT32_C( 1541217841), INT32_C(          0), INT32_C(  738521275), INT32_C(  159429100),
1706                             INT32_C(          0), INT32_C(  181201098), INT32_C(  450627934), INT32_C( 2082954477),
1707                             INT32_C(          0), INT32_C(-1329665093), INT32_C(          0), INT32_C( 1639231015),
1708                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0)),
1709       simde_mm512_set_epi32(INT32_C( 1541217841), INT32_C(          0), INT32_C(  738521275), INT32_C(  159429100),
1710                             INT32_C(          0), INT32_C(-1329665093), INT32_C(-2039025377), INT32_C( 1639231015),
1711                             INT32_C(          0), INT32_C( 1995459397), INT32_C(          0), INT32_C(-1087388220),
1712                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0)),
1713       simde_mm512_set_epi32(INT32_C(  204417556), INT32_C(          0), INT32_C(-2039025377), INT32_C( 1639231015),
1714                             INT32_C(          0), INT32_C(  181201098), INT32_C(  450627934), INT32_C( 2082954477),
1715                             INT32_C(          0), INT32_C( 1995459397), INT32_C(          0), INT32_C(-1087388220),
1716                             INT32_C(          0), INT32_C(          0), INT32_C(          0), INT32_C(          0)) },
1717     { UINT16_C(30100),
1718       simde_mm512_set_epi32(INT32_C( 1313258175), INT32_C( 1928049651), INT32_C(  765730488), INT32_C(  -85899231),
1719                             INT32_C( 1435935141), INT32_C(-2098236580), INT32_C(-1991433794), INT32_C( 1298943776),
1720                             INT32_C(  277470244), INT32_C(-1834748849), INT32_C(  596054477), INT32_C( 1827419510),
1721                             INT32_C(-1010527612), INT32_C(-1687118128), INT32_C(  107945377), INT32_C( 1174128677)),
1722       simde_mm_set_epi32(INT32_C( -852914371), INT32_C( -773785464), INT32_C(-2142007253), INT32_C(  466013192)),
1723       simde_mm512_set_epi32(INT32_C(          0), INT32_C( 1928049651), INT32_C(  765730488), INT32_C(  -85899231),
1724                             INT32_C(          0), INT32_C(-2098236580), INT32_C(          0), INT32_C( 1298943776),
1725                             INT32_C(  277470244), INT32_C(          0), INT32_C(          0), INT32_C( 1827419510),
1726                             INT32_C(          0), INT32_C( -773785464), INT32_C(          0), INT32_C(          0)),
1727       simde_mm512_set_epi32(INT32_C(          0), INT32_C( 1928049651), INT32_C(  765730488), INT32_C(  -85899231),
1728                             INT32_C(          0), INT32_C(-2098236580), INT32_C(          0), INT32_C( 1298943776),
1729                             INT32_C( -852914371), INT32_C(          0), INT32_C(          0), INT32_C(  466013192),
1730                             INT32_C(          0), INT32_C(-1687118128), INT32_C(          0), INT32_C(          0)),
1731       simde_mm512_set_epi32(INT32_C(          0), INT32_C( 1928049651), INT32_C(  765730488), INT32_C(  -85899231),
1732                             INT32_C(          0), INT32_C( -773785464), INT32_C(          0), INT32_C(  466013192),
1733                             INT32_C(  277470244), INT32_C(          0), INT32_C(          0), INT32_C( 1827419510),
1734                             INT32_C(          0), INT32_C(-1687118128), INT32_C(          0), INT32_C(          0)),
1735       simde_mm512_set_epi32(INT32_C(          0), INT32_C( -773785464), INT32_C(-2142007253), INT32_C(  466013192),
1736                             INT32_C(          0), INT32_C(-2098236580), INT32_C(          0), INT32_C( 1298943776),
1737                             INT32_C(  277470244), INT32_C(          0), INT32_C(          0), INT32_C( 1827419510),
1738                             INT32_C(          0), INT32_C(-1687118128), INT32_C(          0), INT32_C(          0)) },
1739   };
1740 
1741   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
1742     simde__m512i r;
1743     r = simde_mm512_maskz_inserti32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
1744     simde_assert_m512i_i32(r, ==, test_vec[i].r0);
1745     r = simde_mm512_maskz_inserti32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
1746     simde_assert_m512i_i32(r, ==, test_vec[i].r1);
1747     r = simde_mm512_maskz_inserti32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 2);
1748     simde_assert_m512i_i32(r, ==, test_vec[i].r2);
1749     r = simde_mm512_maskz_inserti32x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 3);
1750     simde_assert_m512i_i32(r, ==, test_vec[i].r3);
1751   }
1752 
1753   return 0;
1754 }
1755 
1756 static int
test_simde_mm512_inserti64x4(SIMDE_MUNIT_TEST_ARGS)1757 test_simde_mm512_inserti64x4(SIMDE_MUNIT_TEST_ARGS) {
1758   const struct {
1759     simde__m512i a;
1760     simde__m256i b;
1761     simde__m512i r0;
1762     simde__m512i r1;
1763   } test_vec[8] = {
1764     { simde_mm512_set_epi64(INT64_C( 4022993628330696330), INT64_C( -564047204985781920),
1765                             INT64_C( 4934063986128071877), INT64_C( 8258886799903261224),
1766                             INT64_C( 5245738308211416456), INT64_C( 8690736315259258337),
1767                             INT64_C(-5183161890921602420), INT64_C(-2495336383094170141)),
1768       simde_mm256_set_epi64x(INT64_C(-5948029684411535130), INT64_C(-4862378680423071053),
1769                              INT64_C( 7355766231574189317), INT64_C( -310150959079746096)),
1770       simde_mm512_set_epi64(INT64_C( 4022993628330696330), INT64_C( -564047204985781920),
1771                             INT64_C( 4934063986128071877), INT64_C( 8258886799903261224),
1772                             INT64_C(-5948029684411535130), INT64_C(-4862378680423071053),
1773                             INT64_C( 7355766231574189317), INT64_C( -310150959079746096)),
1774       simde_mm512_set_epi64(INT64_C(-5948029684411535130), INT64_C(-4862378680423071053),
1775                             INT64_C( 7355766231574189317), INT64_C( -310150959079746096),
1776                             INT64_C( 5245738308211416456), INT64_C( 8690736315259258337),
1777                             INT64_C(-5183161890921602420), INT64_C(-2495336383094170141)) },
1778     { simde_mm512_set_epi64(INT64_C( 1295774678670654457), INT64_C(-8851107363323835123),
1779                             INT64_C( 2369486750103851747), INT64_C(-5139586436110975467),
1780                             INT64_C(-8115609027568940125), INT64_C( 3504612124823893047),
1781                             INT64_C(-7514888466798804666), INT64_C( 9113506312589344178)),
1782       simde_mm256_set_epi64x(INT64_C(-7443148953768886026), INT64_C( 8448077846545567514),
1783                              INT64_C(-7304267332935478206), INT64_C(-1528489088828046422)),
1784       simde_mm512_set_epi64(INT64_C( 1295774678670654457), INT64_C(-8851107363323835123),
1785                             INT64_C( 2369486750103851747), INT64_C(-5139586436110975467),
1786                             INT64_C(-7443148953768886026), INT64_C( 8448077846545567514),
1787                             INT64_C(-7304267332935478206), INT64_C(-1528489088828046422)),
1788       simde_mm512_set_epi64(INT64_C(-7443148953768886026), INT64_C( 8448077846545567514),
1789                             INT64_C(-7304267332935478206), INT64_C(-1528489088828046422),
1790                             INT64_C(-8115609027568940125), INT64_C( 3504612124823893047),
1791                             INT64_C(-7514888466798804666), INT64_C( 9113506312589344178)) },
1792     { simde_mm512_set_epi64(INT64_C(-3094219001013742557), INT64_C(-3379016320921474793),
1793                             INT64_C( 7772273849745001049), INT64_C(-4229480058937372017),
1794                             INT64_C( 8318730560275653847), INT64_C(-2664412856586094061),
1795                             INT64_C( 2083707536546841162), INT64_C( 5404230241318444880)),
1796       simde_mm256_set_epi64x(INT64_C( 9199350188047982974), INT64_C(-7693432910203882071),
1797                              INT64_C(-5762072963977532348), INT64_C( 4491924425059371454)),
1798       simde_mm512_set_epi64(INT64_C(-3094219001013742557), INT64_C(-3379016320921474793),
1799                             INT64_C( 7772273849745001049), INT64_C(-4229480058937372017),
1800                             INT64_C( 9199350188047982974), INT64_C(-7693432910203882071),
1801                             INT64_C(-5762072963977532348), INT64_C( 4491924425059371454)),
1802       simde_mm512_set_epi64(INT64_C( 9199350188047982974), INT64_C(-7693432910203882071),
1803                             INT64_C(-5762072963977532348), INT64_C( 4491924425059371454),
1804                             INT64_C( 8318730560275653847), INT64_C(-2664412856586094061),
1805                             INT64_C( 2083707536546841162), INT64_C( 5404230241318444880)) },
1806     { simde_mm512_set_epi64(INT64_C( 2522518958303333112), INT64_C(-1668307566098600867),
1807                             INT64_C( 8306832211054389426), INT64_C(-4135341282024622606),
1808                             INT64_C(-7922172549839933132), INT64_C(   90826243433254935),
1809                             INT64_C( 1037923706586637130), INT64_C( 5568688997300093349)),
1810       simde_mm256_set_epi64x(INT64_C( 7563354526679147255), INT64_C(-6952412028107066884),
1811                              INT64_C(-3077616107881632928), INT64_C(-2220298267656761827)),
1812       simde_mm512_set_epi64(INT64_C( 2522518958303333112), INT64_C(-1668307566098600867),
1813                             INT64_C( 8306832211054389426), INT64_C(-4135341282024622606),
1814                             INT64_C( 7563354526679147255), INT64_C(-6952412028107066884),
1815                             INT64_C(-3077616107881632928), INT64_C(-2220298267656761827)),
1816       simde_mm512_set_epi64(INT64_C( 7563354526679147255), INT64_C(-6952412028107066884),
1817                             INT64_C(-3077616107881632928), INT64_C(-2220298267656761827),
1818                             INT64_C(-7922172549839933132), INT64_C(   90826243433254935),
1819                             INT64_C( 1037923706586637130), INT64_C( 5568688997300093349)) },
1820     { simde_mm512_set_epi64(INT64_C(-6876215301736363293), INT64_C(-2253243373865166954),
1821                             INT64_C( 5866706473820467911), INT64_C(-1945184283153250111),
1822                             INT64_C(-6043663531296462836), INT64_C(-3201199251206898425),
1823                             INT64_C(-7517867743898200758), INT64_C( 5023666877462679332)),
1824       simde_mm256_set_epi64x(INT64_C( 1419500527032411112), INT64_C( 5424087511148175828),
1825                              INT64_C(-4780701435803039630), INT64_C( 6069825193561024149)),
1826       simde_mm512_set_epi64(INT64_C(-6876215301736363293), INT64_C(-2253243373865166954),
1827                             INT64_C( 5866706473820467911), INT64_C(-1945184283153250111),
1828                             INT64_C( 1419500527032411112), INT64_C( 5424087511148175828),
1829                             INT64_C(-4780701435803039630), INT64_C( 6069825193561024149)),
1830       simde_mm512_set_epi64(INT64_C( 1419500527032411112), INT64_C( 5424087511148175828),
1831                             INT64_C(-4780701435803039630), INT64_C( 6069825193561024149),
1832                             INT64_C(-6043663531296462836), INT64_C(-3201199251206898425),
1833                             INT64_C(-7517867743898200758), INT64_C( 5023666877462679332)) },
1834     { simde_mm512_set_epi64(INT64_C( 5698026186558744964), INT64_C( 6269499859520580584),
1835                             INT64_C( 7385991043015762011), INT64_C( 2173549174497415259),
1836                             INT64_C(  135432210503006619), INT64_C(-7059566968128636366),
1837                             INT64_C(-1295026765047609725), INT64_C( 5447800525707046939)),
1838       simde_mm256_set_epi64x(INT64_C(-7404082530836275478), INT64_C(-6011864495242619751),
1839                              INT64_C(-2639903919112693390), INT64_C( 3391502071027493622)),
1840       simde_mm512_set_epi64(INT64_C( 5698026186558744964), INT64_C( 6269499859520580584),
1841                             INT64_C( 7385991043015762011), INT64_C( 2173549174497415259),
1842                             INT64_C(-7404082530836275478), INT64_C(-6011864495242619751),
1843                             INT64_C(-2639903919112693390), INT64_C( 3391502071027493622)),
1844       simde_mm512_set_epi64(INT64_C(-7404082530836275478), INT64_C(-6011864495242619751),
1845                             INT64_C(-2639903919112693390), INT64_C( 3391502071027493622),
1846                             INT64_C(  135432210503006619), INT64_C(-7059566968128636366),
1847                             INT64_C(-1295026765047609725), INT64_C( 5447800525707046939)) },
1848     { simde_mm512_set_epi64(INT64_C(-7778482448656032654), INT64_C(-7388935565641111344),
1849                             INT64_C( 2154583157079273400), INT64_C( 4649728279138736034),
1850                             INT64_C( 1896125478609903946), INT64_C( 6795120210135498653),
1851                             INT64_C(-8532964392806396349), INT64_C(-8044512602622188161)),
1852       simde_mm256_set_epi64x(INT64_C(-7828848640852632692), INT64_C(-9058711782958006347),
1853                              INT64_C(-6631984369075385878), INT64_C(  312385656423386943)),
1854       simde_mm512_set_epi64(INT64_C(-7778482448656032654), INT64_C(-7388935565641111344),
1855                             INT64_C( 2154583157079273400), INT64_C( 4649728279138736034),
1856                             INT64_C(-7828848640852632692), INT64_C(-9058711782958006347),
1857                             INT64_C(-6631984369075385878), INT64_C(  312385656423386943)),
1858       simde_mm512_set_epi64(INT64_C(-7828848640852632692), INT64_C(-9058711782958006347),
1859                             INT64_C(-6631984369075385878), INT64_C(  312385656423386943),
1860                             INT64_C( 1896125478609903946), INT64_C( 6795120210135498653),
1861                             INT64_C(-8532964392806396349), INT64_C(-8044512602622188161)) },
1862     { simde_mm512_set_epi64(INT64_C(-8313572030703954107), INT64_C( 8197482817575228316),
1863                             INT64_C( 7734796813438689885), INT64_C(-7308014241195865956),
1864                             INT64_C( 8618855955534148826), INT64_C(-1358620153905394442),
1865                             INT64_C(-6300735262609682931), INT64_C(-6423460006708841158)),
1866       simde_mm256_set_epi64x(INT64_C( 2330675318709913935), INT64_C( 8512876982035459145),
1867                              INT64_C( -754385814369639096), INT64_C(-5873166547629617678)),
1868       simde_mm512_set_epi64(INT64_C(-8313572030703954107), INT64_C( 8197482817575228316),
1869                             INT64_C( 7734796813438689885), INT64_C(-7308014241195865956),
1870                             INT64_C( 2330675318709913935), INT64_C( 8512876982035459145),
1871                             INT64_C( -754385814369639096), INT64_C(-5873166547629617678)),
1872       simde_mm512_set_epi64(INT64_C( 2330675318709913935), INT64_C( 8512876982035459145),
1873                             INT64_C( -754385814369639096), INT64_C(-5873166547629617678),
1874                             INT64_C( 8618855955534148826), INT64_C(-1358620153905394442),
1875                             INT64_C(-6300735262609682931), INT64_C(-6423460006708841158)) },
1876   };
1877 
1878   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
1879     simde__m512i r;
1880     r = simde_mm512_inserti64x4(test_vec[i].a, test_vec[i].b, 0);
1881     simde_assert_m512i_i64(r, ==, test_vec[i].r0);
1882     r = simde_mm512_inserti64x4(test_vec[i].a, test_vec[i].b, 1);
1883     simde_assert_m512i_i64(r, ==, test_vec[i].r1);
1884   }
1885 
1886   return 0;
1887 }
1888 
1889 static int
test_simde_mm512_mask_inserti64x4(SIMDE_MUNIT_TEST_ARGS)1890 test_simde_mm512_mask_inserti64x4(SIMDE_MUNIT_TEST_ARGS) {
1891   const struct {
1892     simde__m512i src;
1893     simde__mmask8 k;
1894     simde__m512i a;
1895     simde__m256i b;
1896     simde__m512i r0;
1897     simde__m512i r1;
1898   } test_vec[8] = {
1899     { simde_mm512_set_epi64(INT64_C(-4408197122649025847), INT64_C(  624651997750430240),
1900                             INT64_C(-3688244718601593553), INT64_C( 4693564151120802069),
1901                             INT64_C( 7940316924786767481), INT64_C( 6743600876828439814),
1902                             INT64_C( 8561828216572109007), INT64_C(-8315109086095518889)),
1903       UINT8_C( 47),
1904       simde_mm512_set_epi64(INT64_C( -890089152921238147), INT64_C( 8823574133744668217),
1905                             INT64_C(-6364969741708969084), INT64_C(-1418976459802394322),
1906                             INT64_C( 4477375336277674053), INT64_C( 1282248710630285123),
1907                             INT64_C( 6638105739971879812), INT64_C(-8038098956427236545)),
1908       simde_mm256_set_epi64x(INT64_C(  961867877660623168), INT64_C( 2426510480636680010),
1909                              INT64_C(-6612602987193650875), INT64_C( 6143333881204814617)),
1910       simde_mm512_set_epi64(INT64_C(-4408197122649025847), INT64_C(  624651997750430240),
1911                             INT64_C(-6364969741708969084), INT64_C( 4693564151120802069),
1912                             INT64_C(  961867877660623168), INT64_C( 2426510480636680010),
1913                             INT64_C(-6612602987193650875), INT64_C( 6143333881204814617)),
1914       simde_mm512_set_epi64(INT64_C(-4408197122649025847), INT64_C(  624651997750430240),
1915                             INT64_C(-6612602987193650875), INT64_C( 4693564151120802069),
1916                             INT64_C( 4477375336277674053), INT64_C( 1282248710630285123),
1917                             INT64_C( 6638105739971879812), INT64_C(-8038098956427236545)) },
1918     { simde_mm512_set_epi64(INT64_C(-8949662758380266635), INT64_C( 4701312916269037777),
1919                             INT64_C(-1461656220613716217), INT64_C(-4369965941555109637),
1920                             INT64_C( 7350668077567080689), INT64_C( 8478919882954811661),
1921                             INT64_C(-3394066222784588743), INT64_C(-5009306653852991983)),
1922       UINT8_C( 51),
1923       simde_mm512_set_epi64(INT64_C( -393151907512138120), INT64_C(  600214805061827669),
1924                             INT64_C( 3163434753014979248), INT64_C( 3418472134552461373),
1925                             INT64_C(-6111840559061041971), INT64_C( 6656352319933975670),
1926                             INT64_C( 2357435311113502667), INT64_C(-8860733056306413573)),
1927       simde_mm256_set_epi64x(INT64_C(-3038909907977133732), INT64_C(-7842471790453318316),
1928                              INT64_C(-7256600765093102205), INT64_C( 3898178537456140670)),
1929       simde_mm512_set_epi64(INT64_C(-8949662758380266635), INT64_C( 4701312916269037777),
1930                             INT64_C( 3163434753014979248), INT64_C( 3418472134552461373),
1931                             INT64_C( 7350668077567080689), INT64_C( 8478919882954811661),
1932                             INT64_C(-7256600765093102205), INT64_C( 3898178537456140670)),
1933       simde_mm512_set_epi64(INT64_C(-8949662758380266635), INT64_C( 4701312916269037777),
1934                             INT64_C(-7256600765093102205), INT64_C( 3898178537456140670),
1935                             INT64_C( 7350668077567080689), INT64_C( 8478919882954811661),
1936                             INT64_C( 2357435311113502667), INT64_C(-8860733056306413573)) },
1937     { simde_mm512_set_epi64(INT64_C( 7306080674171373254), INT64_C( 2163582539809461657),
1938                             INT64_C(-7942896186346970451), INT64_C(-2775611318017263858),
1939                             INT64_C( 7897714815450887445), INT64_C(-2675129847260557604),
1940                             INT64_C( 2145911307457407401), INT64_C( 3797455296467543827)),
1941       UINT8_C(191),
1942       simde_mm512_set_epi64(INT64_C( -751557688731444383), INT64_C( 5324069355912068288),
1943                             INT64_C( 5226578984858504214), INT64_C(-8776157931044543560),
1944                             INT64_C(-1848672680316222475), INT64_C( 1658167909352451238),
1945                             INT64_C(  377173394815185621), INT64_C(-6742373427678247978)),
1946       simde_mm256_set_epi64x(INT64_C( 7620312646179506248), INT64_C(-4730811392556899367),
1947                              INT64_C(-7555925455226975890), INT64_C( 6555696811272222802)),
1948       simde_mm512_set_epi64(INT64_C( -751557688731444383), INT64_C( 2163582539809461657),
1949                             INT64_C( 5226578984858504214), INT64_C(-8776157931044543560),
1950                             INT64_C( 7620312646179506248), INT64_C(-4730811392556899367),
1951                             INT64_C(-7555925455226975890), INT64_C( 6555696811272222802)),
1952       simde_mm512_set_epi64(INT64_C( 7620312646179506248), INT64_C( 2163582539809461657),
1953                             INT64_C(-7555925455226975890), INT64_C( 6555696811272222802),
1954                             INT64_C(-1848672680316222475), INT64_C( 1658167909352451238),
1955                             INT64_C(  377173394815185621), INT64_C(-6742373427678247978)) },
1956     { simde_mm512_set_epi64(INT64_C( 1941135797030545610), INT64_C( 1935432241277000941),
1957                             INT64_C( 5390015454023535429), INT64_C(  -49705421380794940),
1958                             INT64_C( 3138707856740708121), INT64_C(-4673519228421997952),
1959                             INT64_C(-1556073591389999033), INT64_C( 3509487153133496527)),
1960       UINT8_C(191),
1961       simde_mm512_set_epi64(INT64_C(-7880186302232587827), INT64_C( 7848707034806784644),
1962                             INT64_C(-7246117184140796511), INT64_C( 5042844271761388948),
1963                             INT64_C(  877966720713550779), INT64_C(-8757547308289839577),
1964                             INT64_C( 6619480224799141474), INT64_C( 3171924723684651500)),
1965       simde_mm256_set_epi64x(INT64_C( 8280910196874944184), INT64_C( -368934386460614235),
1966                              INT64_C(-9011857488067354178), INT64_C( 5578921037540219940)),
1967       simde_mm512_set_epi64(INT64_C(-7880186302232587827), INT64_C( 1935432241277000941),
1968                             INT64_C(-7246117184140796511), INT64_C( 5042844271761388948),
1969                             INT64_C( 8280910196874944184), INT64_C( -368934386460614235),
1970                             INT64_C(-9011857488067354178), INT64_C( 5578921037540219940)),
1971       simde_mm512_set_epi64(INT64_C( 8280910196874944184), INT64_C( 1935432241277000941),
1972                             INT64_C(-9011857488067354178), INT64_C( 5578921037540219940),
1973                             INT64_C(  877966720713550779), INT64_C(-8757547308289839577),
1974                             INT64_C( 6619480224799141474), INT64_C( 3171924723684651500)) },
1975     { simde_mm512_set_epi64(INT64_C( 6286668337562607931), INT64_C( 1432089847019206822),
1976                             INT64_C(-2235254547542691893), INT64_C(-2975358417486477451),
1977                             INT64_C( 5974528986311566652), INT64_C( 4798128784982043356),
1978                             INT64_C(-3663239326212228984), INT64_C(-9199851098963784696)),
1979       UINT8_C(  9),
1980       simde_mm512_set_epi64(INT64_C(-3486865648830471282), INT64_C( 8151787653682140580),
1981                             INT64_C( -831601358278995789), INT64_C(-2800664419916301039),
1982                             INT64_C( 3280702275774868225), INT64_C(-4735905134864699368),
1983                             INT64_C( 7051416147935021095), INT64_C(-4824857292892203785)),
1984       simde_mm256_set_epi64x(INT64_C(-7733586635814839612), INT64_C(-3387038813920004365),
1985                              INT64_C(-6023807055599376167), INT64_C( 2056379472574346663)),
1986       simde_mm512_set_epi64(INT64_C( 6286668337562607931), INT64_C( 1432089847019206822),
1987                             INT64_C(-2235254547542691893), INT64_C(-2975358417486477451),
1988                             INT64_C(-7733586635814839612), INT64_C( 4798128784982043356),
1989                             INT64_C(-3663239326212228984), INT64_C( 2056379472574346663)),
1990       simde_mm512_set_epi64(INT64_C( 6286668337562607931), INT64_C( 1432089847019206822),
1991                             INT64_C(-2235254547542691893), INT64_C(-2975358417486477451),
1992                             INT64_C( 3280702275774868225), INT64_C( 4798128784982043356),
1993                             INT64_C(-3663239326212228984), INT64_C(-4824857292892203785)) },
1994     { simde_mm512_set_epi64(INT64_C(-1389624339165317749), INT64_C(-8184083999390244234),
1995                             INT64_C( 8331479114169761131), INT64_C( 8817045194671758320),
1996                             INT64_C(-5234965963681749811), INT64_C(-5331803015084564567),
1997                             INT64_C(-2592115690296560951), INT64_C( 1248919004007478956)),
1998       UINT8_C(200),
1999       simde_mm512_set_epi64(INT64_C(-2742037214038451026), INT64_C(  735886283373328205),
2000                             INT64_C(  709814645617696632), INT64_C( 6904524208941840952),
2001                             INT64_C(-7164378700336361334), INT64_C( 4351794567182281042),
2002                             INT64_C(-1716872434006574729), INT64_C( -689503347190866770)),
2003       simde_mm256_set_epi64x(INT64_C( 8457250603347908949), INT64_C(-2879367942796632989),
2004                              INT64_C( 4447365578798205979), INT64_C( 6508361231067538121)),
2005       simde_mm512_set_epi64(INT64_C(-2742037214038451026), INT64_C(  735886283373328205),
2006                             INT64_C( 8331479114169761131), INT64_C( 8817045194671758320),
2007                             INT64_C( 8457250603347908949), INT64_C(-5331803015084564567),
2008                             INT64_C(-2592115690296560951), INT64_C( 1248919004007478956)),
2009       simde_mm512_set_epi64(INT64_C( 8457250603347908949), INT64_C(-2879367942796632989),
2010                             INT64_C( 8331479114169761131), INT64_C( 8817045194671758320),
2011                             INT64_C(-7164378700336361334), INT64_C(-5331803015084564567),
2012                             INT64_C(-2592115690296560951), INT64_C( 1248919004007478956)) },
2013     { simde_mm512_set_epi64(INT64_C( 7927414333096918356), INT64_C(-6028737433755228757),
2014                             INT64_C(-6289085317177674471), INT64_C(-5541511610486147753),
2015                             INT64_C( 6531713794566454707), INT64_C( -446705336047418133),
2016                             INT64_C(-6709780755556058351), INT64_C( 2443726936750986290)),
2017       UINT8_C(108),
2018       simde_mm512_set_epi64(INT64_C(-8286621218977708484), INT64_C(-7274138402675197655),
2019                             INT64_C( 7751882187628938139), INT64_C(-6483923961368987645),
2020                             INT64_C(-7861334054348205497), INT64_C( 1332497272334397574),
2021                             INT64_C(-5616284701672264206), INT64_C( 2669799685376652269)),
2022       simde_mm256_set_epi64x(INT64_C(  200988278415395979), INT64_C(-2971850709824830963),
2023                              INT64_C(-2133313091920417115), INT64_C( 4623597880832003711)),
2024       simde_mm512_set_epi64(INT64_C( 7927414333096918356), INT64_C(-7274138402675197655),
2025                             INT64_C( 7751882187628938139), INT64_C(-5541511610486147753),
2026                             INT64_C(  200988278415395979), INT64_C(-2971850709824830963),
2027                             INT64_C(-6709780755556058351), INT64_C( 2443726936750986290)),
2028       simde_mm512_set_epi64(INT64_C( 7927414333096918356), INT64_C(-2971850709824830963),
2029                             INT64_C(-2133313091920417115), INT64_C(-5541511610486147753),
2030                             INT64_C(-7861334054348205497), INT64_C( 1332497272334397574),
2031                             INT64_C(-6709780755556058351), INT64_C( 2443726936750986290)) },
2032     { simde_mm512_set_epi64(INT64_C(-2107226359725098394), INT64_C(-4111796092278699383),
2033                             INT64_C(-7795021097560230286), INT64_C( -756190175563217595),
2034                             INT64_C(-6005669436564621566), INT64_C(  848382361298179127),
2035                             INT64_C( 1511386602075754511), INT64_C(-7343592175834719092)),
2036       UINT8_C(114),
2037       simde_mm512_set_epi64(INT64_C(-5446377680450598123), INT64_C( 6545920141858823590),
2038                             INT64_C(-6109676225565942508), INT64_C( 7950769636462343621),
2039                             INT64_C(-2554331370738443173), INT64_C( 3394005203063129217),
2040                             INT64_C(-2129862572478557053), INT64_C( 6740280704142266940)),
2041       simde_mm256_set_epi64x(INT64_C(-7150215929147729012), INT64_C( 4777590230543990164),
2042                              INT64_C(-7212709010936609343), INT64_C(-5423311652387614668)),
2043       simde_mm512_set_epi64(INT64_C(-2107226359725098394), INT64_C( 6545920141858823590),
2044                             INT64_C(-6109676225565942508), INT64_C( 7950769636462343621),
2045                             INT64_C(-6005669436564621566), INT64_C(  848382361298179127),
2046                             INT64_C(-7212709010936609343), INT64_C(-7343592175834719092)),
2047       simde_mm512_set_epi64(INT64_C(-2107226359725098394), INT64_C( 4777590230543990164),
2048                             INT64_C(-7212709010936609343), INT64_C(-5423311652387614668),
2049                             INT64_C(-6005669436564621566), INT64_C(  848382361298179127),
2050                             INT64_C(-2129862572478557053), INT64_C(-7343592175834719092)) },
2051   };
2052 
2053   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
2054     simde__m512i r;
2055     r = simde_mm512_mask_inserti64x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
2056     simde_assert_m512i_i64(r, ==, test_vec[i].r0);
2057     r = simde_mm512_mask_inserti64x4(test_vec[i].src, test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
2058     simde_assert_m512i_i64(r, ==, test_vec[i].r1);
2059   }
2060 
2061   return 0;
2062 }
2063 
2064 static int
test_simde_mm512_maskz_inserti64x4(SIMDE_MUNIT_TEST_ARGS)2065 test_simde_mm512_maskz_inserti64x4(SIMDE_MUNIT_TEST_ARGS) {
2066   const struct {
2067     simde__mmask8 k;
2068     simde__m512i a;
2069     simde__m256i b;
2070     simde__m512i r0;
2071     simde__m512i r1;
2072   } test_vec[8] = {
2073     { UINT8_C( 46),
2074       simde_mm512_set_epi64(INT64_C(-4408197122649025847), INT64_C(  624651997750430240),
2075                             INT64_C(-3688244718601593553), INT64_C( 4693564151120802069),
2076                             INT64_C( 7940316924786767481), INT64_C( 6743600876828439814),
2077                             INT64_C( 8561828216572109007), INT64_C(-8315109086095518889)),
2078       simde_mm256_set_epi64x(INT64_C( 4477375336277674053), INT64_C( 1282248710630285123),
2079                              INT64_C( 6638105739971879812), INT64_C(-8038098956427236545)),
2080       simde_mm512_set_epi64(INT64_C(                   0), INT64_C(                   0),
2081                             INT64_C(-3688244718601593553), INT64_C(                   0),
2082                             INT64_C( 4477375336277674053), INT64_C( 1282248710630285123),
2083                             INT64_C( 6638105739971879812), INT64_C(                   0)),
2084       simde_mm512_set_epi64(INT64_C(                   0), INT64_C(                   0),
2085                             INT64_C( 6638105739971879812), INT64_C(                   0),
2086                             INT64_C( 7940316924786767481), INT64_C( 6743600876828439814),
2087                             INT64_C( 8561828216572109007), INT64_C(                   0)) },
2088     { UINT8_C(251),
2089       simde_mm512_set_epi64(INT64_C(-8749971605870264899), INT64_C( 1212032624670585453),
2090                             INT64_C(  728623586565902494), INT64_C( 4873652658109514141),
2091                             INT64_C(-4767707706458520415), INT64_C(-7083171014951853588),
2092                             INT64_C(-2076988212358998594), INT64_C( 3698505898575972461)),
2093       simde_mm256_set_epi64x(INT64_C( 7350668077567080689), INT64_C( 8478919882954811661),
2094                              INT64_C(-3394066222784588743), INT64_C(-5009306653852991983)),
2095       simde_mm512_set_epi64(INT64_C(-8749971605870264899), INT64_C( 1212032624670585453),
2096                             INT64_C(  728623586565902494), INT64_C( 4873652658109514141),
2097                             INT64_C( 7350668077567080689), INT64_C(                   0),
2098                             INT64_C(-3394066222784588743), INT64_C(-5009306653852991983)),
2099       simde_mm512_set_epi64(INT64_C( 7350668077567080689), INT64_C( 8478919882954811661),
2100                             INT64_C(-3394066222784588743), INT64_C(-5009306653852991983),
2101                             INT64_C(-4767707706458520415), INT64_C(                   0),
2102                             INT64_C(-2076988212358998594), INT64_C( 3698505898575972461)) },
2103     { UINT8_C(185),
2104       simde_mm512_set_epi64(INT64_C( 7391005387705442660), INT64_C(-5091463632259113685),
2105                             INT64_C(  685405269785004780), INT64_C(-2602517860068074949),
2106                             INT64_C( 4704994953943345443), INT64_C( 8877610218385468208),
2107                             INT64_C( 5776984527519295337), INT64_C( 6526937450820584225)),
2108       simde_mm256_set_epi64x(INT64_C( -855682284319457684), INT64_C( 5906689130134529071),
2109                              INT64_C( 7251917267735594789), INT64_C(-5506395256633894325)),
2110       simde_mm512_set_epi64(INT64_C( 7391005387705442660), INT64_C(                   0),
2111                             INT64_C(  685405269785004780), INT64_C(-2602517860068074949),
2112                             INT64_C( -855682284319457684), INT64_C(                   0),
2113                             INT64_C(                   0), INT64_C(-5506395256633894325)),
2114       simde_mm512_set_epi64(INT64_C( -855682284319457684), INT64_C(                   0),
2115                             INT64_C( 7251917267735594789), INT64_C(-5506395256633894325),
2116                             INT64_C( 4704994953943345443), INT64_C(                   0),
2117                             INT64_C(                   0), INT64_C( 6526937450820584225)) },
2118     { UINT8_C( 23),
2119       simde_mm512_set_epi64(INT64_C( 5406280044045291975), INT64_C(-2284955492954404973),
2120                             INT64_C(-3603637419527123210), INT64_C(-1117409850830928520),
2121                             INT64_C(-1414228054518303181), INT64_C(-3038909907977133732),
2122                             INT64_C(-7842471790453318316), INT64_C(-7256600765093102205)),
2123       simde_mm256_set_epi64x(INT64_C( 1455933536394832297), INT64_C( -840828676201867557),
2124                              INT64_C( 6310833464661060096), INT64_C( 8429580363859954742)),
2125       simde_mm512_set_epi64(INT64_C(                   0), INT64_C(                   0),
2126                             INT64_C(                   0), INT64_C(-1117409850830928520),
2127                             INT64_C(                   0), INT64_C( -840828676201867557),
2128                             INT64_C( 6310833464661060096), INT64_C( 8429580363859954742)),
2129       simde_mm512_set_epi64(INT64_C(                   0), INT64_C(                   0),
2130                             INT64_C(                   0), INT64_C( 8429580363859954742),
2131                             INT64_C(                   0), INT64_C(-3038909907977133732),
2132                             INT64_C(-7842471790453318316), INT64_C(-7256600765093102205)) },
2133     { UINT8_C(248),
2134       simde_mm512_set_epi64(INT64_C( 6555696811272222802), INT64_C( -751557688731444383),
2135                             INT64_C( 5324069355912068288), INT64_C( 5226578984858504214),
2136                             INT64_C(-8776157931044543560), INT64_C(-1848672680316222475),
2137                             INT64_C( 1658167909352451238), INT64_C(  377173394815185621)),
2138       simde_mm256_set_epi64x(INT64_C(-4444585746033374017), INT64_C( 7620312646179506248),
2139                              INT64_C(-4730811392556899367), INT64_C(-7555925455226975890)),
2140       simde_mm512_set_epi64(INT64_C( 6555696811272222802), INT64_C( -751557688731444383),
2141                             INT64_C( 5324069355912068288), INT64_C( 5226578984858504214),
2142                             INT64_C(-4444585746033374017), INT64_C(                   0),
2143                             INT64_C(                   0), INT64_C(                   0)),
2144       simde_mm512_set_epi64(INT64_C(-4444585746033374017), INT64_C( 7620312646179506248),
2145                             INT64_C(-4730811392556899367), INT64_C(-7555925455226975890),
2146                             INT64_C(-8776157931044543560), INT64_C(                   0),
2147                             INT64_C(                   0), INT64_C(                   0)) },
2148     { UINT8_C(161),
2149       simde_mm512_set_epi64(INT64_C( 3171924723684651500), INT64_C( 1941135797030545610),
2150                             INT64_C( 1935432241277000941), INT64_C( 5390015454023535429),
2151                             INT64_C(  -49705421380794940), INT64_C( 3138707856740708121),
2152                             INT64_C(-4673519228421997952), INT64_C(-1556073591389999033)),
2153       simde_mm256_set_epi64x(INT64_C( 5042844271761388948), INT64_C(  877966720713550779),
2154                              INT64_C(-8757547308289839577), INT64_C( 6619480224799141474)),
2155       simde_mm512_set_epi64(INT64_C( 3171924723684651500), INT64_C(                   0),
2156                             INT64_C( 1935432241277000941), INT64_C(                   0),
2157                             INT64_C(                   0), INT64_C(                   0),
2158                             INT64_C(                   0), INT64_C( 6619480224799141474)),
2159       simde_mm512_set_epi64(INT64_C( 5042844271761388948), INT64_C(                   0),
2160                             INT64_C(-8757547308289839577), INT64_C(                   0),
2161                             INT64_C(                   0), INT64_C(                   0),
2162                             INT64_C(                   0), INT64_C(-1556073591389999033)) },
2163     { UINT8_C(203),
2164       simde_mm512_set_epi64(INT64_C(-9199851098963784696), INT64_C( 5640400914757694451),
2165                             INT64_C( 3288787407719188513), INT64_C( 6167294471968879452),
2166                             INT64_C(-8553143016080257248), INT64_C( 1191725626053358671),
2167                             INT64_C( 2560034487176803702), INT64_C(-4340183042637127984)),
2168       simde_mm256_set_epi64x(INT64_C(-2975358417486477451), INT64_C( 5974528986311566652),
2169                              INT64_C( 4798128784982043356), INT64_C(-3663239326212228984)),
2170       simde_mm512_set_epi64(INT64_C(-9199851098963784696), INT64_C( 5640400914757694451),
2171                             INT64_C(                   0), INT64_C(                   0),
2172                             INT64_C(-2975358417486477451), INT64_C(                   0),
2173                             INT64_C( 4798128784982043356), INT64_C(-3663239326212228984)),
2174       simde_mm512_set_epi64(INT64_C(-2975358417486477451), INT64_C( 5974528986311566652),
2175                             INT64_C(                   0), INT64_C(                   0),
2176                             INT64_C(-8553143016080257248), INT64_C(                   0),
2177                             INT64_C( 2560034487176803702), INT64_C(-4340183042637127984)) },
2178     { UINT8_C(101),
2179       simde_mm512_set_epi64(INT64_C( 9010665687833774732), INT64_C( 8345237253505115478),
2180                             INT64_C(-9124175189821182113), INT64_C( 3058208134496233888),
2181                             INT64_C( 7286481320132913626), INT64_C( -777692308098335861),
2182                             INT64_C( 8727238559278288416), INT64_C(-2736507802934917164)),
2183       simde_mm256_set_epi64x(INT64_C(  -35491302857917892), INT64_C( 3617223551823391274),
2184                              INT64_C(-6488944280908793938), INT64_C( 6206969247155195640)),
2185       simde_mm512_set_epi64(INT64_C(                   0), INT64_C( 8345237253505115478),
2186                             INT64_C(-9124175189821182113), INT64_C(                   0),
2187                             INT64_C(                   0), INT64_C( 3617223551823391274),
2188                             INT64_C(                   0), INT64_C( 6206969247155195640)),
2189       simde_mm512_set_epi64(INT64_C(                   0), INT64_C( 3617223551823391274),
2190                             INT64_C(-6488944280908793938), INT64_C(                   0),
2191                             INT64_C(                   0), INT64_C( -777692308098335861),
2192                             INT64_C(                   0), INT64_C(-2736507802934917164)) },
2193   };
2194 
2195   for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
2196     simde__m512i r;
2197     r = simde_mm512_maskz_inserti64x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 0);
2198     simde_assert_m512i_i64(r, ==, test_vec[i].r0);
2199     r = simde_mm512_maskz_inserti64x4(test_vec[i].k, test_vec[i].a, test_vec[i].b, 1);
2200     simde_assert_m512i_i64(r, ==, test_vec[i].r1);
2201   }
2202 
2203   return 0;
2204 }
2205 
2206 SIMDE_TEST_FUNC_LIST_BEGIN
2207   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_insertf32x4)
2208   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_insertf32x4)
2209   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_insertf32x4)
2210   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_insertf64x4)
2211   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_insertf64x4)
2212   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_insertf64x4)
2213   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_inserti32x4)
2214   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_inserti32x4)
2215   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_inserti32x4)
2216   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_inserti64x4)
2217   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_inserti64x4)
2218   SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_inserti64x4)
2219 SIMDE_TEST_FUNC_LIST_END
2220 
2221 #include <test/x86/avx512/test-avx512-footer.h>
2222