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