minimap2 0.2.25.1 → 0.2.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -0
  3. data/ext/Rakefile +2 -2
  4. data/ext/minimap2/NEWS.md +9 -0
  5. data/ext/minimap2/README.md +2 -2
  6. data/ext/minimap2/cookbook.md +2 -2
  7. data/ext/minimap2/minimap.h +1 -1
  8. data/ext/minimap2/minimap2.1 +1 -1
  9. data/ext/minimap2/misc/paftools.js +1 -1
  10. data/ext/minimap2/python/mappy.pyx +1 -1
  11. data/ext/minimap2/setup.py +22 -32
  12. data/lib/minimap2/version.rb +1 -1
  13. metadata +1 -97
  14. data/ext/minimap2/lib/simde/CONTRIBUTING.md +0 -114
  15. data/ext/minimap2/lib/simde/COPYING +0 -20
  16. data/ext/minimap2/lib/simde/README.md +0 -333
  17. data/ext/minimap2/lib/simde/amalgamate.py +0 -58
  18. data/ext/minimap2/lib/simde/meson.build +0 -33
  19. data/ext/minimap2/lib/simde/netlify.toml +0 -20
  20. data/ext/minimap2/lib/simde/simde/arm/neon/float32x2.h +0 -140
  21. data/ext/minimap2/lib/simde/simde/arm/neon/float32x4.h +0 -137
  22. data/ext/minimap2/lib/simde/simde/arm/neon/float64x1.h +0 -142
  23. data/ext/minimap2/lib/simde/simde/arm/neon/float64x2.h +0 -145
  24. data/ext/minimap2/lib/simde/simde/arm/neon/int16x4.h +0 -140
  25. data/ext/minimap2/lib/simde/simde/arm/neon/int16x8.h +0 -145
  26. data/ext/minimap2/lib/simde/simde/arm/neon/int32x2.h +0 -140
  27. data/ext/minimap2/lib/simde/simde/arm/neon/int32x4.h +0 -143
  28. data/ext/minimap2/lib/simde/simde/arm/neon/int64x1.h +0 -137
  29. data/ext/minimap2/lib/simde/simde/arm/neon/int64x2.h +0 -141
  30. data/ext/minimap2/lib/simde/simde/arm/neon/int8x16.h +0 -147
  31. data/ext/minimap2/lib/simde/simde/arm/neon/int8x8.h +0 -141
  32. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x4.h +0 -134
  33. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x8.h +0 -138
  34. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x2.h +0 -134
  35. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x4.h +0 -137
  36. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x1.h +0 -131
  37. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x2.h +0 -135
  38. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x16.h +0 -141
  39. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x8.h +0 -135
  40. data/ext/minimap2/lib/simde/simde/arm/neon.h +0 -97
  41. data/ext/minimap2/lib/simde/simde/check.h +0 -267
  42. data/ext/minimap2/lib/simde/simde/debug-trap.h +0 -83
  43. data/ext/minimap2/lib/simde/simde/hedley.h +0 -1899
  44. data/ext/minimap2/lib/simde/simde/simde-arch.h +0 -445
  45. data/ext/minimap2/lib/simde/simde/simde-common.h +0 -697
  46. data/ext/minimap2/lib/simde/simde/x86/avx.h +0 -5385
  47. data/ext/minimap2/lib/simde/simde/x86/avx2.h +0 -2402
  48. data/ext/minimap2/lib/simde/simde/x86/avx512bw.h +0 -391
  49. data/ext/minimap2/lib/simde/simde/x86/avx512f.h +0 -3389
  50. data/ext/minimap2/lib/simde/simde/x86/avx512vl.h +0 -112
  51. data/ext/minimap2/lib/simde/simde/x86/fma.h +0 -659
  52. data/ext/minimap2/lib/simde/simde/x86/mmx.h +0 -2210
  53. data/ext/minimap2/lib/simde/simde/x86/sse.h +0 -3696
  54. data/ext/minimap2/lib/simde/simde/x86/sse2.h +0 -5991
  55. data/ext/minimap2/lib/simde/simde/x86/sse3.h +0 -343
  56. data/ext/minimap2/lib/simde/simde/x86/sse4.1.h +0 -1783
  57. data/ext/minimap2/lib/simde/simde/x86/sse4.2.h +0 -105
  58. data/ext/minimap2/lib/simde/simde/x86/ssse3.h +0 -1053
  59. data/ext/minimap2/lib/simde/simde/x86/svml.h +0 -543
  60. data/ext/minimap2/lib/simde/test/CMakeLists.txt +0 -166
  61. data/ext/minimap2/lib/simde/test/arm/meson.build +0 -4
  62. data/ext/minimap2/lib/simde/test/arm/neon/meson.build +0 -23
  63. data/ext/minimap2/lib/simde/test/arm/neon/skel.c +0 -871
  64. data/ext/minimap2/lib/simde/test/arm/neon/test-neon-internal.h +0 -134
  65. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.c +0 -39
  66. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.h +0 -10
  67. data/ext/minimap2/lib/simde/test/arm/neon/vadd.c +0 -1260
  68. data/ext/minimap2/lib/simde/test/arm/neon/vdup_n.c +0 -873
  69. data/ext/minimap2/lib/simde/test/arm/neon/vmul.c +0 -1084
  70. data/ext/minimap2/lib/simde/test/arm/neon/vsub.c +0 -1260
  71. data/ext/minimap2/lib/simde/test/arm/test-arm-internal.h +0 -18
  72. data/ext/minimap2/lib/simde/test/arm/test-arm.c +0 -20
  73. data/ext/minimap2/lib/simde/test/arm/test-arm.h +0 -8
  74. data/ext/minimap2/lib/simde/test/cmake/AddCompilerFlags.cmake +0 -171
  75. data/ext/minimap2/lib/simde/test/cmake/ExtraWarningFlags.cmake +0 -68
  76. data/ext/minimap2/lib/simde/test/meson.build +0 -64
  77. data/ext/minimap2/lib/simde/test/munit/COPYING +0 -21
  78. data/ext/minimap2/lib/simde/test/munit/Makefile +0 -55
  79. data/ext/minimap2/lib/simde/test/munit/README.md +0 -54
  80. data/ext/minimap2/lib/simde/test/munit/example.c +0 -351
  81. data/ext/minimap2/lib/simde/test/munit/meson.build +0 -37
  82. data/ext/minimap2/lib/simde/test/munit/munit.c +0 -2055
  83. data/ext/minimap2/lib/simde/test/munit/munit.h +0 -535
  84. data/ext/minimap2/lib/simde/test/run-tests.c +0 -20
  85. data/ext/minimap2/lib/simde/test/run-tests.h +0 -260
  86. data/ext/minimap2/lib/simde/test/x86/avx.c +0 -13752
  87. data/ext/minimap2/lib/simde/test/x86/avx2.c +0 -9977
  88. data/ext/minimap2/lib/simde/test/x86/avx512bw.c +0 -2664
  89. data/ext/minimap2/lib/simde/test/x86/avx512f.c +0 -10416
  90. data/ext/minimap2/lib/simde/test/x86/avx512vl.c +0 -210
  91. data/ext/minimap2/lib/simde/test/x86/fma.c +0 -2557
  92. data/ext/minimap2/lib/simde/test/x86/meson.build +0 -33
  93. data/ext/minimap2/lib/simde/test/x86/mmx.c +0 -2878
  94. data/ext/minimap2/lib/simde/test/x86/skel.c +0 -2984
  95. data/ext/minimap2/lib/simde/test/x86/sse.c +0 -5121
  96. data/ext/minimap2/lib/simde/test/x86/sse2.c +0 -9860
  97. data/ext/minimap2/lib/simde/test/x86/sse3.c +0 -486
  98. data/ext/minimap2/lib/simde/test/x86/sse4.1.c +0 -3446
  99. data/ext/minimap2/lib/simde/test/x86/sse4.2.c +0 -101
  100. data/ext/minimap2/lib/simde/test/x86/ssse3.c +0 -2084
  101. data/ext/minimap2/lib/simde/test/x86/svml.c +0 -1545
  102. data/ext/minimap2/lib/simde/test/x86/test-avx.h +0 -16
  103. data/ext/minimap2/lib/simde/test/x86/test-avx512.h +0 -25
  104. data/ext/minimap2/lib/simde/test/x86/test-mmx.h +0 -13
  105. data/ext/minimap2/lib/simde/test/x86/test-sse.h +0 -13
  106. data/ext/minimap2/lib/simde/test/x86/test-sse2.h +0 -13
  107. data/ext/minimap2/lib/simde/test/x86/test-x86-internal.h +0 -196
  108. data/ext/minimap2/lib/simde/test/x86/test-x86.c +0 -48
  109. data/ext/minimap2/lib/simde/test/x86/test-x86.h +0 -8
@@ -1,873 +0,0 @@
1
- /* Copyright (c) 2018-2019 Evan Nemerson <evan@nemerson.com>
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
-
24
- #define SIMDE_TESTS_CURRENT_NEON_OP dup
25
- #include <test/arm/neon/test-neon-internal.h>
26
- #include <simde/arm/neon.h>
27
-
28
- #if defined(SIMDE_NEON_NATIVE) || defined(SIMDE_NO_NATIVE) || defined(SIMDE_ALWAYS_BUILD_NATIVE_TESTS)
29
-
30
- static MunitResult
31
- test_simde_vdup_n_s8(const MunitParameter params[], void* data) {
32
- (void) params;
33
- (void) data;
34
-
35
- const struct {
36
- int8_t a;
37
- simde_int8x8_t r;
38
- } test_vec[8] = {
39
- { INT8_C( -78),
40
- simde_x_vload_s8(INT8_C( -78), INT8_C( -78), INT8_C( -78), INT8_C( -78),
41
- INT8_C( -78), INT8_C( -78), INT8_C( -78), INT8_C( -78)) },
42
- { INT8_C( -88),
43
- simde_x_vload_s8(INT8_C( -88), INT8_C( -88), INT8_C( -88), INT8_C( -88),
44
- INT8_C( -88), INT8_C( -88), INT8_C( -88), INT8_C( -88)) },
45
- { INT8_C( -61),
46
- simde_x_vload_s8(INT8_C( -61), INT8_C( -61), INT8_C( -61), INT8_C( -61),
47
- INT8_C( -61), INT8_C( -61), INT8_C( -61), INT8_C( -61)) },
48
- { INT8_C( -26),
49
- simde_x_vload_s8(INT8_C( -26), INT8_C( -26), INT8_C( -26), INT8_C( -26),
50
- INT8_C( -26), INT8_C( -26), INT8_C( -26), INT8_C( -26)) },
51
- { INT8_C( 67),
52
- simde_x_vload_s8(INT8_C( 67), INT8_C( 67), INT8_C( 67), INT8_C( 67),
53
- INT8_C( 67), INT8_C( 67), INT8_C( 67), INT8_C( 67)) },
54
- { INT8_C( 63),
55
- simde_x_vload_s8(INT8_C( 63), INT8_C( 63), INT8_C( 63), INT8_C( 63),
56
- INT8_C( 63), INT8_C( 63), INT8_C( 63), INT8_C( 63)) },
57
- { INT8_C( -72),
58
- simde_x_vload_s8(INT8_C( -72), INT8_C( -72), INT8_C( -72), INT8_C( -72),
59
- INT8_C( -72), INT8_C( -72), INT8_C( -72), INT8_C( -72)) },
60
- { INT8_C( 78),
61
- simde_x_vload_s8(INT8_C( 78), INT8_C( 78), INT8_C( 78), INT8_C( 78),
62
- INT8_C( 78), INT8_C( 78), INT8_C( 78), INT8_C( 78)) }
63
- };
64
-
65
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
66
- simde_int8x8_t r = simde_vdup_n_s8(test_vec[i].a);
67
- simde_neon_assert_int8x8(r, ==, test_vec[i].r);
68
- }
69
-
70
- return MUNIT_OK;
71
- }
72
-
73
- static MunitResult
74
- test_simde_vdup_n_s16(const MunitParameter params[], void* data) {
75
- (void) params;
76
- (void) data;
77
-
78
- const struct {
79
- int16_t a;
80
- simde_int16x4_t r;
81
- } test_vec[8] = {
82
- { INT16_C( -1865),
83
- simde_x_vload_s16(INT16_C( -1865), INT16_C( -1865), INT16_C( -1865), INT16_C( -1865)) },
84
- { INT16_C( 27689),
85
- simde_x_vload_s16(INT16_C( 27689), INT16_C( 27689), INT16_C( 27689), INT16_C( 27689)) },
86
- { INT16_C(-10330),
87
- simde_x_vload_s16(INT16_C(-10330), INT16_C(-10330), INT16_C(-10330), INT16_C(-10330)) },
88
- { INT16_C( 5744),
89
- simde_x_vload_s16(INT16_C( 5744), INT16_C( 5744), INT16_C( 5744), INT16_C( 5744)) },
90
- { INT16_C( 18577),
91
- simde_x_vload_s16(INT16_C( 18577), INT16_C( 18577), INT16_C( 18577), INT16_C( 18577)) },
92
- { INT16_C( 4051),
93
- simde_x_vload_s16(INT16_C( 4051), INT16_C( 4051), INT16_C( 4051), INT16_C( 4051)) },
94
- { INT16_C(-16648),
95
- simde_x_vload_s16(INT16_C(-16648), INT16_C(-16648), INT16_C(-16648), INT16_C(-16648)) },
96
- { INT16_C( 10953),
97
- simde_x_vload_s16(INT16_C( 10953), INT16_C( 10953), INT16_C( 10953), INT16_C( 10953)) }
98
- };
99
-
100
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
101
- simde_int16x4_t r = simde_vdup_n_s16(test_vec[i].a);
102
- simde_neon_assert_int16x4(r, ==, test_vec[i].r);
103
- }
104
-
105
- return MUNIT_OK;
106
- }
107
-
108
- static MunitResult
109
- test_simde_vdup_n_s32(const MunitParameter params[], void* data) {
110
- (void) params;
111
- (void) data;
112
-
113
- const struct {
114
- int32_t a;
115
- simde_int32x2_t r;
116
- } test_vec[8] = {
117
- { INT32_C( 1916587522),
118
- simde_x_vload_s32(INT32_C( 1916587522), INT32_C( 1916587522)) },
119
- { INT32_C( 1768587922),
120
- simde_x_vload_s32(INT32_C( 1768587922), INT32_C( 1768587922)) },
121
- { INT32_C( -691487954),
122
- simde_x_vload_s32(INT32_C( -691487954), INT32_C( -691487954)) },
123
- { INT32_C( 543996952),
124
- simde_x_vload_s32(INT32_C( 543996952), INT32_C( 543996952)) },
125
- { INT32_C(-1169990649),
126
- simde_x_vload_s32(INT32_C(-1169990649), INT32_C(-1169990649)) },
127
- { INT32_C( 112382576),
128
- simde_x_vload_s32(INT32_C( 112382576), INT32_C( 112382576)) },
129
- { INT32_C( 106559916),
130
- simde_x_vload_s32(INT32_C( 106559916), INT32_C( 106559916)) },
131
- { INT32_C(-1392833028),
132
- simde_x_vload_s32(INT32_C(-1392833028), INT32_C(-1392833028)) }
133
- };
134
-
135
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
136
- simde_int32x2_t r = simde_vdup_n_s32(test_vec[i].a);
137
- simde_neon_assert_int32x2(r, ==, test_vec[i].r);
138
- }
139
-
140
- return MUNIT_OK;
141
- }
142
-
143
- static MunitResult
144
- test_simde_vdup_n_s64(const MunitParameter params[], void* data) {
145
- (void) params;
146
- (void) data;
147
-
148
- const struct {
149
- int64_t a;
150
- simde_int64x1_t r;
151
- } test_vec[8] = {
152
- { INT64_C( 334131234436610929),
153
- simde_x_vload_s64(INT64_C( 334131234436610929)) },
154
- { INT64_C( -381209590406960721),
155
- simde_x_vload_s64(INT64_C( -381209590406960721)) },
156
- { INT64_C( 3405124667411469289),
157
- simde_x_vload_s64(INT64_C( 3405124667411469289)) },
158
- { INT64_C( 6563288036870666397),
159
- simde_x_vload_s64(INT64_C( 6563288036870666397)) },
160
- { INT64_C(-2481307072264039015),
161
- simde_x_vload_s64(INT64_C(-2481307072264039015)) },
162
- { INT64_C( 9161860841737114354),
163
- simde_x_vload_s64(INT64_C( 9161860841737114354)) },
164
- { INT64_C( 8226355109123244726),
165
- simde_x_vload_s64(INT64_C( 8226355109123244726)) },
166
- { INT64_C(-6469854538759863639),
167
- simde_x_vload_s64(INT64_C(-6469854538759863639)) }
168
- };
169
-
170
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
171
- simde_int64x1_t r = simde_vdup_n_s64(test_vec[i].a);
172
- simde_neon_assert_int64x1(r, ==, test_vec[i].r);
173
- }
174
-
175
- return MUNIT_OK;
176
- }
177
-
178
- static MunitResult
179
- test_simde_vdup_n_u8(const MunitParameter params[], void* data) {
180
- (void) params;
181
- (void) data;
182
-
183
- const struct {
184
- uint8_t a;
185
- simde_uint8x8_t r;
186
- } test_vec[8] = {
187
- { UINT8_C(208),
188
- simde_x_vload_u8(UINT8_C(208), UINT8_C(208), UINT8_C(208), UINT8_C(208),
189
- UINT8_C(208), UINT8_C(208), UINT8_C(208), UINT8_C(208)) },
190
- { UINT8_C( 37),
191
- simde_x_vload_u8(UINT8_C( 37), UINT8_C( 37), UINT8_C( 37), UINT8_C( 37),
192
- UINT8_C( 37), UINT8_C( 37), UINT8_C( 37), UINT8_C( 37)) },
193
- { UINT8_C(154),
194
- simde_x_vload_u8(UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154),
195
- UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154)) },
196
- { UINT8_C(109),
197
- simde_x_vload_u8(UINT8_C(109), UINT8_C(109), UINT8_C(109), UINT8_C(109),
198
- UINT8_C(109), UINT8_C(109), UINT8_C(109), UINT8_C(109)) },
199
- { UINT8_C(202),
200
- simde_x_vload_u8(UINT8_C(202), UINT8_C(202), UINT8_C(202), UINT8_C(202),
201
- UINT8_C(202), UINT8_C(202), UINT8_C(202), UINT8_C(202)) },
202
- { UINT8_C( 54),
203
- simde_x_vload_u8(UINT8_C( 54), UINT8_C( 54), UINT8_C( 54), UINT8_C( 54),
204
- UINT8_C( 54), UINT8_C( 54), UINT8_C( 54), UINT8_C( 54)) },
205
- { UINT8_C( 84),
206
- simde_x_vload_u8(UINT8_C( 84), UINT8_C( 84), UINT8_C( 84), UINT8_C( 84),
207
- UINT8_C( 84), UINT8_C( 84), UINT8_C( 84), UINT8_C( 84)) },
208
- { UINT8_C(241),
209
- simde_x_vload_u8(UINT8_C(241), UINT8_C(241), UINT8_C(241), UINT8_C(241),
210
- UINT8_C(241), UINT8_C(241), UINT8_C(241), UINT8_C(241)) }
211
- };
212
-
213
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
214
- simde_uint8x8_t r = simde_vdup_n_u8(test_vec[i].a);
215
- simde_neon_assert_uint8x8(r, ==, test_vec[i].r);
216
- }
217
-
218
- return MUNIT_OK;
219
- }
220
-
221
- static MunitResult
222
- test_simde_vdup_n_u16(const MunitParameter params[], void* data) {
223
- (void) params;
224
- (void) data;
225
-
226
- const struct {
227
- uint16_t a;
228
- simde_uint16x4_t r;
229
- } test_vec[8] = {
230
- { UINT16_C( 7975),
231
- simde_x_vload_u16(UINT16_C( 7975), UINT16_C( 7975), UINT16_C( 7975), UINT16_C( 7975)) },
232
- { UINT16_C(47599),
233
- simde_x_vload_u16(UINT16_C(47599), UINT16_C(47599), UINT16_C(47599), UINT16_C(47599)) },
234
- { UINT16_C(18065),
235
- simde_x_vload_u16(UINT16_C(18065), UINT16_C(18065), UINT16_C(18065), UINT16_C(18065)) },
236
- { UINT16_C(57574),
237
- simde_x_vload_u16(UINT16_C(57574), UINT16_C(57574), UINT16_C(57574), UINT16_C(57574)) },
238
- { UINT16_C(26215),
239
- simde_x_vload_u16(UINT16_C(26215), UINT16_C(26215), UINT16_C(26215), UINT16_C(26215)) },
240
- { UINT16_C(25160),
241
- simde_x_vload_u16(UINT16_C(25160), UINT16_C(25160), UINT16_C(25160), UINT16_C(25160)) },
242
- { UINT16_C(15997),
243
- simde_x_vload_u16(UINT16_C(15997), UINT16_C(15997), UINT16_C(15997), UINT16_C(15997)) },
244
- { UINT16_C(10837),
245
- simde_x_vload_u16(UINT16_C(10837), UINT16_C(10837), UINT16_C(10837), UINT16_C(10837)) }
246
- };
247
-
248
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
249
- simde_uint16x4_t r = simde_vdup_n_u16(test_vec[i].a);
250
- simde_neon_assert_uint16x4(r, ==, test_vec[i].r);
251
- }
252
-
253
- return MUNIT_OK;
254
- }
255
-
256
- static MunitResult
257
- test_simde_vdup_n_u32(const MunitParameter params[], void* data) {
258
- (void) params;
259
- (void) data;
260
-
261
- const struct {
262
- uint32_t a;
263
- simde_uint32x2_t r;
264
- } test_vec[8] = {
265
- { UINT32_C(2191554300),
266
- simde_x_vload_u32(UINT32_C(2191554300), UINT32_C(2191554300)) },
267
- { UINT32_C(3680691148),
268
- simde_x_vload_u32(UINT32_C(3680691148), UINT32_C(3680691148)) },
269
- { UINT32_C(1032348780),
270
- simde_x_vload_u32(UINT32_C(1032348780), UINT32_C(1032348780)) },
271
- { UINT32_C(2246539900),
272
- simde_x_vload_u32(UINT32_C(2246539900), UINT32_C(2246539900)) },
273
- { UINT32_C(1509373219),
274
- simde_x_vload_u32(UINT32_C(1509373219), UINT32_C(1509373219)) },
275
- { UINT32_C(3567484403),
276
- simde_x_vload_u32(UINT32_C(3567484403), UINT32_C(3567484403)) },
277
- { UINT32_C(1519121594),
278
- simde_x_vload_u32(UINT32_C(1519121594), UINT32_C(1519121594)) },
279
- { UINT32_C(2118894533),
280
- simde_x_vload_u32(UINT32_C(2118894533), UINT32_C(2118894533)) }
281
- };
282
-
283
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
284
- simde_uint32x2_t r = simde_vdup_n_u32(test_vec[i].a);
285
- simde_neon_assert_uint32x2(r, ==, test_vec[i].r);
286
- }
287
-
288
- return MUNIT_OK;
289
- }
290
-
291
- static MunitResult
292
- test_simde_vdup_n_u64(const MunitParameter params[], void* data) {
293
- (void) params;
294
- (void) data;
295
-
296
- const struct {
297
- uint64_t a;
298
- simde_uint64x1_t r;
299
- } test_vec[8] = {
300
- { UINT64_C(9284230750851825515),
301
- simde_x_vload_u64(UINT64_C(9284230750851825515)) },
302
- { UINT64_C(1047137957001313899),
303
- simde_x_vload_u64(UINT64_C(1047137957001313899)) },
304
- { UINT64_C(6667637795209568306),
305
- simde_x_vload_u64(UINT64_C(6667637795209568306)) },
306
- { UINT64_C(13739307323863797778),
307
- simde_x_vload_u64(UINT64_C(13739307323863797778)) },
308
- { UINT64_C(3093886915367912862),
309
- simde_x_vload_u64(UINT64_C(3093886915367912862)) },
310
- { UINT64_C(9010151081532470036),
311
- simde_x_vload_u64(UINT64_C(9010151081532470036)) },
312
- { UINT64_C(13460085984077414991),
313
- simde_x_vload_u64(UINT64_C(13460085984077414991)) },
314
- { UINT64_C(18082508431338632924),
315
- simde_x_vload_u64(UINT64_C(18082508431338632924)) }
316
- };
317
-
318
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
319
- simde_uint64x1_t r = simde_vdup_n_u64(test_vec[i].a);
320
- simde_neon_assert_uint64x1(r, ==, test_vec[i].r);
321
- }
322
-
323
- return MUNIT_OK;
324
- }
325
-
326
- static MunitResult
327
- test_simde_vdup_n_f32(const MunitParameter params[], void* data) {
328
- (void) params;
329
- (void) data;
330
-
331
- const struct {
332
- simde_float32 a;
333
- simde_float32x2_t r;
334
- } test_vec[8] = {
335
- { SIMDE_FLOAT32_C( -324.45),
336
- simde_x_vload_f32(SIMDE_FLOAT32_C( -324.45), SIMDE_FLOAT32_C( -324.45)) },
337
- { SIMDE_FLOAT32_C( 705.22),
338
- simde_x_vload_f32(SIMDE_FLOAT32_C( 705.22), SIMDE_FLOAT32_C( 705.22)) },
339
- { SIMDE_FLOAT32_C( -996.79),
340
- simde_x_vload_f32(SIMDE_FLOAT32_C( -996.79), SIMDE_FLOAT32_C( -996.79)) },
341
- { SIMDE_FLOAT32_C( 843.74),
342
- simde_x_vload_f32(SIMDE_FLOAT32_C( 843.74), SIMDE_FLOAT32_C( 843.74)) },
343
- { SIMDE_FLOAT32_C( 946.70),
344
- simde_x_vload_f32(SIMDE_FLOAT32_C( 946.70), SIMDE_FLOAT32_C( 946.70)) },
345
- { SIMDE_FLOAT32_C( 387.10),
346
- simde_x_vload_f32(SIMDE_FLOAT32_C( 387.10), SIMDE_FLOAT32_C( 387.10)) },
347
- { SIMDE_FLOAT32_C( -613.17),
348
- simde_x_vload_f32(SIMDE_FLOAT32_C( -613.17), SIMDE_FLOAT32_C( -613.17)) },
349
- { SIMDE_FLOAT32_C( 182.49),
350
- simde_x_vload_f32(SIMDE_FLOAT32_C( 182.49), SIMDE_FLOAT32_C( 182.49)) }
351
- };
352
-
353
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
354
- simde_float32x2_t r = simde_vdup_n_f32(test_vec[i].a);
355
- simde_neon_assert_float32x2_equal(r, test_vec[i].r, 1);
356
- }
357
-
358
- return MUNIT_OK;
359
- }
360
-
361
- static MunitResult
362
- test_simde_vdup_n_f64(const MunitParameter params[], void* data) {
363
- (void) params;
364
- (void) data;
365
-
366
- const struct {
367
- simde_float64 a;
368
- simde_float64x1_t r;
369
- } test_vec[8] = {
370
- { SIMDE_FLOAT64_C( -545.91),
371
- simde_x_vload_f64(SIMDE_FLOAT64_C( -545.91)) },
372
- { SIMDE_FLOAT64_C( -308.32),
373
- simde_x_vload_f64(SIMDE_FLOAT64_C( -308.32)) },
374
- { SIMDE_FLOAT64_C( -309.58),
375
- simde_x_vload_f64(SIMDE_FLOAT64_C( -309.58)) },
376
- { SIMDE_FLOAT64_C( 472.89),
377
- simde_x_vload_f64(SIMDE_FLOAT64_C( 472.89)) },
378
- { SIMDE_FLOAT64_C( 94.81),
379
- simde_x_vload_f64(SIMDE_FLOAT64_C( 94.81)) },
380
- { SIMDE_FLOAT64_C( -37.15),
381
- simde_x_vload_f64(SIMDE_FLOAT64_C( -37.15)) },
382
- { SIMDE_FLOAT64_C( -245.92),
383
- simde_x_vload_f64(SIMDE_FLOAT64_C( -245.92)) },
384
- { SIMDE_FLOAT64_C( 363.91),
385
- simde_x_vload_f64(SIMDE_FLOAT64_C( 363.91)) }
386
- };
387
-
388
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
389
- simde_float64x1_t r = simde_vdup_n_f64(test_vec[i].a);
390
- simde_neon_assert_float64x1_equal(r, test_vec[i].r, 1);
391
- }
392
-
393
- return MUNIT_OK;
394
- }
395
-
396
- static MunitResult
397
- test_simde_vdupq_n_s8(const MunitParameter params[], void* data) {
398
- (void) params;
399
- (void) data;
400
-
401
- const struct {
402
- int8_t a;
403
- simde_int8x16_t r;
404
- } test_vec[8] = {
405
- { INT8_C( 15),
406
- simde_x_vloadq_s8(INT8_C( 15), INT8_C( 15), INT8_C( 15), INT8_C( 15),
407
- INT8_C( 15), INT8_C( 15), INT8_C( 15), INT8_C( 15),
408
- INT8_C( 15), INT8_C( 15), INT8_C( 15), INT8_C( 15),
409
- INT8_C( 15), INT8_C( 15), INT8_C( 15), INT8_C( 15)) },
410
- { INT8_C( 125),
411
- simde_x_vloadq_s8(INT8_C( 125), INT8_C( 125), INT8_C( 125), INT8_C( 125),
412
- INT8_C( 125), INT8_C( 125), INT8_C( 125), INT8_C( 125),
413
- INT8_C( 125), INT8_C( 125), INT8_C( 125), INT8_C( 125),
414
- INT8_C( 125), INT8_C( 125), INT8_C( 125), INT8_C( 125)) },
415
- { INT8_C( -71),
416
- simde_x_vloadq_s8(INT8_C( -71), INT8_C( -71), INT8_C( -71), INT8_C( -71),
417
- INT8_C( -71), INT8_C( -71), INT8_C( -71), INT8_C( -71),
418
- INT8_C( -71), INT8_C( -71), INT8_C( -71), INT8_C( -71),
419
- INT8_C( -71), INT8_C( -71), INT8_C( -71), INT8_C( -71)) },
420
- { INT8_C( -4),
421
- simde_x_vloadq_s8(INT8_C( -4), INT8_C( -4), INT8_C( -4), INT8_C( -4),
422
- INT8_C( -4), INT8_C( -4), INT8_C( -4), INT8_C( -4),
423
- INT8_C( -4), INT8_C( -4), INT8_C( -4), INT8_C( -4),
424
- INT8_C( -4), INT8_C( -4), INT8_C( -4), INT8_C( -4)) },
425
- { INT8_C( 18),
426
- simde_x_vloadq_s8(INT8_C( 18), INT8_C( 18), INT8_C( 18), INT8_C( 18),
427
- INT8_C( 18), INT8_C( 18), INT8_C( 18), INT8_C( 18),
428
- INT8_C( 18), INT8_C( 18), INT8_C( 18), INT8_C( 18),
429
- INT8_C( 18), INT8_C( 18), INT8_C( 18), INT8_C( 18)) },
430
- { INT8_C( -97),
431
- simde_x_vloadq_s8(INT8_C( -97), INT8_C( -97), INT8_C( -97), INT8_C( -97),
432
- INT8_C( -97), INT8_C( -97), INT8_C( -97), INT8_C( -97),
433
- INT8_C( -97), INT8_C( -97), INT8_C( -97), INT8_C( -97),
434
- INT8_C( -97), INT8_C( -97), INT8_C( -97), INT8_C( -97)) },
435
- { INT8_C( -79),
436
- simde_x_vloadq_s8(INT8_C( -79), INT8_C( -79), INT8_C( -79), INT8_C( -79),
437
- INT8_C( -79), INT8_C( -79), INT8_C( -79), INT8_C( -79),
438
- INT8_C( -79), INT8_C( -79), INT8_C( -79), INT8_C( -79),
439
- INT8_C( -79), INT8_C( -79), INT8_C( -79), INT8_C( -79)) },
440
- { INT8_C( -96),
441
- simde_x_vloadq_s8(INT8_C( -96), INT8_C( -96), INT8_C( -96), INT8_C( -96),
442
- INT8_C( -96), INT8_C( -96), INT8_C( -96), INT8_C( -96),
443
- INT8_C( -96), INT8_C( -96), INT8_C( -96), INT8_C( -96),
444
- INT8_C( -96), INT8_C( -96), INT8_C( -96), INT8_C( -96)) }
445
- };
446
-
447
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
448
- simde_int8x16_t r = simde_vdupq_n_s8(test_vec[i].a);
449
- simde_neon_assert_int8x16(r, ==, test_vec[i].r);
450
- }
451
-
452
- return MUNIT_OK;
453
- }
454
-
455
- static MunitResult
456
- test_simde_vdupq_n_s16(const MunitParameter params[], void* data) {
457
- (void) params;
458
- (void) data;
459
-
460
- const struct {
461
- int16_t a;
462
- simde_int16x8_t r;
463
- } test_vec[8] = {
464
- { INT16_C(-18161),
465
- simde_x_vloadq_s16(INT16_C(-18161), INT16_C(-18161), INT16_C(-18161), INT16_C(-18161),
466
- INT16_C(-18161), INT16_C(-18161), INT16_C(-18161), INT16_C(-18161)) },
467
- { INT16_C( 3453),
468
- simde_x_vloadq_s16(INT16_C( 3453), INT16_C( 3453), INT16_C( 3453), INT16_C( 3453),
469
- INT16_C( 3453), INT16_C( 3453), INT16_C( 3453), INT16_C( 3453)) },
470
- { INT16_C( 26809),
471
- simde_x_vloadq_s16(INT16_C( 26809), INT16_C( 26809), INT16_C( 26809), INT16_C( 26809),
472
- INT16_C( 26809), INT16_C( 26809), INT16_C( 26809), INT16_C( 26809)) },
473
- { INT16_C(-30468),
474
- simde_x_vloadq_s16(INT16_C(-30468), INT16_C(-30468), INT16_C(-30468), INT16_C(-30468),
475
- INT16_C(-30468), INT16_C(-30468), INT16_C(-30468), INT16_C(-30468)) },
476
- { INT16_C(-32238),
477
- simde_x_vloadq_s16(INT16_C(-32238), INT16_C(-32238), INT16_C(-32238), INT16_C(-32238),
478
- INT16_C(-32238), INT16_C(-32238), INT16_C(-32238), INT16_C(-32238)) },
479
- { INT16_C(-32609),
480
- simde_x_vloadq_s16(INT16_C(-32609), INT16_C(-32609), INT16_C(-32609), INT16_C(-32609),
481
- INT16_C(-32609), INT16_C(-32609), INT16_C(-32609), INT16_C(-32609)) },
482
- { INT16_C(-15183),
483
- simde_x_vloadq_s16(INT16_C(-15183), INT16_C(-15183), INT16_C(-15183), INT16_C(-15183),
484
- INT16_C(-15183), INT16_C(-15183), INT16_C(-15183), INT16_C(-15183)) },
485
- { INT16_C( 24224),
486
- simde_x_vloadq_s16(INT16_C( 24224), INT16_C( 24224), INT16_C( 24224), INT16_C( 24224),
487
- INT16_C( 24224), INT16_C( 24224), INT16_C( 24224), INT16_C( 24224)) }
488
- };
489
-
490
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
491
- simde_int16x8_t r = simde_vdupq_n_s16(test_vec[i].a);
492
- simde_neon_assert_int16x8(r, ==, test_vec[i].r);
493
- }
494
-
495
- return MUNIT_OK;
496
- }
497
-
498
- static MunitResult
499
- test_simde_vdupq_n_s32(const MunitParameter params[], void* data) {
500
- (void) params;
501
- (void) data;
502
-
503
- const struct {
504
- int32_t a;
505
- simde_int32x4_t r;
506
- } test_vec[8] = {
507
- { INT32_C( -600721137),
508
- simde_x_vloadq_s32(INT32_C( -600721137), INT32_C( -600721137),
509
- INT32_C( -600721137), INT32_C( -600721137)) },
510
- { INT32_C( 1437535613),
511
- simde_x_vloadq_s32(INT32_C( 1437535613), INT32_C( 1437535613),
512
- INT32_C( 1437535613), INT32_C( 1437535613)) },
513
- { INT32_C(-1830983495),
514
- simde_x_vloadq_s32(INT32_C(-1830983495), INT32_C(-1830983495),
515
- INT32_C(-1830983495), INT32_C(-1830983495)) },
516
- { INT32_C( 1662028028),
517
- simde_x_vloadq_s32(INT32_C( 1662028028), INT32_C( 1662028028),
518
- INT32_C( 1662028028), INT32_C( 1662028028)) },
519
- { INT32_C( 735543826),
520
- simde_x_vloadq_s32(INT32_C( 735543826), INT32_C( 735543826),
521
- INT32_C( 735543826), INT32_C( 735543826)) },
522
- { INT32_C( 1508081823),
523
- simde_x_vloadq_s32(INT32_C( 1508081823), INT32_C( 1508081823),
524
- INT32_C( 1508081823), INT32_C( 1508081823)) },
525
- { INT32_C( 439469233),
526
- simde_x_vloadq_s32(INT32_C( 439469233), INT32_C( 439469233),
527
- INT32_C( 439469233), INT32_C( 439469233)) },
528
- { INT32_C( -524525920),
529
- simde_x_vloadq_s32(INT32_C( -524525920), INT32_C( -524525920),
530
- INT32_C( -524525920), INT32_C( -524525920)) }
531
- };
532
-
533
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
534
- simde_int32x4_t r = simde_vdupq_n_s32(test_vec[i].a);
535
- simde_neon_assert_int32x4(r, ==, test_vec[i].r);
536
- }
537
-
538
- return MUNIT_OK;
539
- }
540
-
541
- static MunitResult
542
- test_simde_vdupq_n_s64(const MunitParameter params[], void* data) {
543
- (void) params;
544
- (void) data;
545
-
546
- const struct {
547
- int64_t a;
548
- simde_int64x2_t r;
549
- } test_vec[8] = {
550
- { INT64_C( 6174168448364558607),
551
- simde_x_vloadq_s64(INT64_C( 6174168448364558607), INT64_C( 6174168448364558607)) },
552
- { INT64_C( 7138356027759356089),
553
- simde_x_vloadq_s64(INT64_C( 7138356027759356089), INT64_C( 7138356027759356089)) },
554
- { INT64_C( 6477162110212604434),
555
- simde_x_vloadq_s64(INT64_C( 6477162110212604434), INT64_C( 6477162110212604434)) },
556
- { INT64_C(-2252821671864843087),
557
- simde_x_vloadq_s64(INT64_C(-2252821671864843087), INT64_C(-2252821671864843087)) },
558
- { INT64_C( -556506427644455564),
559
- simde_x_vloadq_s64(INT64_C( -556506427644455564), INT64_C( -556506427644455564)) },
560
- { INT64_C( 2313226981968176270),
561
- simde_x_vloadq_s64(INT64_C( 2313226981968176270), INT64_C( 2313226981968176270)) },
562
- { INT64_C(-5078103753510275894),
563
- simde_x_vloadq_s64(INT64_C(-5078103753510275894), INT64_C(-5078103753510275894)) },
564
- { INT64_C(-8872623523915285054),
565
- simde_x_vloadq_s64(INT64_C(-8872623523915285054), INT64_C(-8872623523915285054)) }
566
- };
567
-
568
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
569
- simde_int64x2_t r = simde_vdupq_n_s64(test_vec[i].a);
570
- simde_neon_assert_int64x2(r, ==, test_vec[i].r);
571
- }
572
-
573
- return MUNIT_OK;
574
- }
575
-
576
- static MunitResult
577
- test_simde_vdupq_n_u8(const MunitParameter params[], void* data) {
578
- (void) params;
579
- (void) data;
580
-
581
- const struct {
582
- uint8_t a;
583
- simde_uint8x16_t r;
584
- } test_vec[8] = {
585
- { UINT8_C(206),
586
- simde_x_vloadq_u8(UINT8_C(206), UINT8_C(206), UINT8_C(206), UINT8_C(206),
587
- UINT8_C(206), UINT8_C(206), UINT8_C(206), UINT8_C(206),
588
- UINT8_C(206), UINT8_C(206), UINT8_C(206), UINT8_C(206),
589
- UINT8_C(206), UINT8_C(206), UINT8_C(206), UINT8_C(206) ) },
590
- { UINT8_C(135),
591
- simde_x_vloadq_u8(UINT8_C(135), UINT8_C(135), UINT8_C(135), UINT8_C(135),
592
- UINT8_C(135), UINT8_C(135), UINT8_C(135), UINT8_C(135),
593
- UINT8_C(135), UINT8_C(135), UINT8_C(135), UINT8_C(135),
594
- UINT8_C(135), UINT8_C(135), UINT8_C(135), UINT8_C(135) ) },
595
- { UINT8_C(116),
596
- simde_x_vloadq_u8(UINT8_C(116), UINT8_C(116), UINT8_C(116), UINT8_C(116),
597
- UINT8_C(116), UINT8_C(116), UINT8_C(116), UINT8_C(116),
598
- UINT8_C(116), UINT8_C(116), UINT8_C(116), UINT8_C(116),
599
- UINT8_C(116), UINT8_C(116), UINT8_C(116), UINT8_C(116) ) },
600
- { UINT8_C(154),
601
- simde_x_vloadq_u8(UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154),
602
- UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154),
603
- UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154),
604
- UINT8_C(154), UINT8_C(154), UINT8_C(154), UINT8_C(154) ) },
605
- { UINT8_C(166),
606
- simde_x_vloadq_u8(UINT8_C(166), UINT8_C(166), UINT8_C(166), UINT8_C(166),
607
- UINT8_C(166), UINT8_C(166), UINT8_C(166), UINT8_C(166),
608
- UINT8_C(166), UINT8_C(166), UINT8_C(166), UINT8_C(166),
609
- UINT8_C(166), UINT8_C(166), UINT8_C(166), UINT8_C(166) ) },
610
- { UINT8_C( 29),
611
- simde_x_vloadq_u8(UINT8_C( 29), UINT8_C( 29), UINT8_C( 29), UINT8_C( 29),
612
- UINT8_C( 29), UINT8_C( 29), UINT8_C( 29), UINT8_C( 29),
613
- UINT8_C( 29), UINT8_C( 29), UINT8_C( 29), UINT8_C( 29),
614
- UINT8_C( 29), UINT8_C( 29), UINT8_C( 29), UINT8_C( 29) ) },
615
- { UINT8_C(241),
616
- simde_x_vloadq_u8(UINT8_C(241), UINT8_C(241), UINT8_C(241), UINT8_C(241),
617
- UINT8_C(241), UINT8_C(241), UINT8_C(241), UINT8_C(241),
618
- UINT8_C(241), UINT8_C(241), UINT8_C(241), UINT8_C(241),
619
- UINT8_C(241), UINT8_C(241), UINT8_C(241), UINT8_C(241) ) },
620
- { UINT8_C( 37),
621
- simde_x_vloadq_u8(UINT8_C( 37), UINT8_C( 37), UINT8_C( 37), UINT8_C( 37),
622
- UINT8_C( 37), UINT8_C( 37), UINT8_C( 37), UINT8_C( 37),
623
- UINT8_C( 37), UINT8_C( 37), UINT8_C( 37), UINT8_C( 37),
624
- UINT8_C( 37), UINT8_C( 37), UINT8_C( 37), UINT8_C( 37) ) }
625
- };
626
-
627
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
628
- simde_uint8x16_t r = simde_vdupq_n_u8(test_vec[i].a);
629
- simde_neon_assert_uint8x16(r, ==, test_vec[i].r);
630
- }
631
-
632
- return MUNIT_OK;
633
- }
634
-
635
- static MunitResult
636
- test_simde_vdupq_n_u16(const MunitParameter params[], void* data) {
637
- (void) params;
638
- (void) data;
639
-
640
- const struct {
641
- uint16_t a;
642
- simde_uint16x8_t r;
643
- } test_vec[8] = {
644
- { UINT16_C(45182),
645
- simde_x_vloadq_u16(UINT16_C(45182), UINT16_C(45182), UINT16_C(45182), UINT16_C(45182),
646
- UINT16_C(45182), UINT16_C(45182), UINT16_C(45182), UINT16_C(45182)) },
647
- { UINT16_C(31361),
648
- simde_x_vloadq_u16(UINT16_C(31361), UINT16_C(31361), UINT16_C(31361), UINT16_C(31361),
649
- UINT16_C(31361), UINT16_C(31361), UINT16_C(31361), UINT16_C(31361)) },
650
- { UINT16_C( 4643),
651
- simde_x_vloadq_u16(UINT16_C( 4643), UINT16_C( 4643), UINT16_C( 4643), UINT16_C( 4643),
652
- UINT16_C( 4643), UINT16_C( 4643), UINT16_C( 4643), UINT16_C( 4643)) },
653
- { UINT16_C(25762),
654
- simde_x_vloadq_u16(UINT16_C(25762), UINT16_C(25762), UINT16_C(25762), UINT16_C(25762),
655
- UINT16_C(25762), UINT16_C(25762), UINT16_C(25762), UINT16_C(25762)) },
656
- { UINT16_C(26213),
657
- simde_x_vloadq_u16(UINT16_C(26213), UINT16_C(26213), UINT16_C(26213), UINT16_C(26213),
658
- UINT16_C(26213), UINT16_C(26213), UINT16_C(26213), UINT16_C(26213)) },
659
- { UINT16_C(11045),
660
- simde_x_vloadq_u16(UINT16_C(11045), UINT16_C(11045), UINT16_C(11045), UINT16_C(11045),
661
- UINT16_C(11045), UINT16_C(11045), UINT16_C(11045), UINT16_C(11045)) },
662
- { UINT16_C(56313),
663
- simde_x_vloadq_u16(UINT16_C(56313), UINT16_C(56313), UINT16_C(56313), UINT16_C(56313),
664
- UINT16_C(56313), UINT16_C(56313), UINT16_C(56313), UINT16_C(56313)) },
665
- { UINT16_C( 1055),
666
- simde_x_vloadq_u16(UINT16_C( 1055), UINT16_C( 1055), UINT16_C( 1055), UINT16_C( 1055),
667
- UINT16_C( 1055), UINT16_C( 1055), UINT16_C( 1055), UINT16_C( 1055)) }
668
- };
669
-
670
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
671
- simde_uint16x8_t r = simde_vdupq_n_u16(test_vec[i].a);
672
- simde_neon_assert_uint16x8(r, ==, test_vec[i].r);
673
- }
674
-
675
- return MUNIT_OK;
676
- }
677
-
678
- static MunitResult
679
- test_simde_vdupq_n_u32(const MunitParameter params[], void* data) {
680
- (void) params;
681
- (void) data;
682
-
683
- const struct {
684
- uint32_t a;
685
- simde_uint32x4_t r;
686
- } test_vec[8] = {
687
- { UINT32_C(3205406207),
688
- simde_x_vloadq_u32(UINT32_C(3205406207), UINT32_C(3205406207),
689
- UINT32_C(3205406207), UINT32_C(3205406207)) },
690
- { UINT32_C(2641608279),
691
- simde_x_vloadq_u32(UINT32_C(2641608279), UINT32_C(2641608279),
692
- UINT32_C(2641608279), UINT32_C(2641608279)) },
693
- { UINT32_C( 69583),
694
- simde_x_vloadq_u32(UINT32_C( 69583), UINT32_C( 69583),
695
- UINT32_C( 69583), UINT32_C( 69583)) },
696
- { UINT32_C(1363136797),
697
- simde_x_vloadq_u32(UINT32_C(1363136797), UINT32_C(1363136797),
698
- UINT32_C(1363136797), UINT32_C(1363136797)) },
699
- { UINT32_C(1146760842),
700
- simde_x_vloadq_u32(UINT32_C(1146760842), UINT32_C(1146760842),
701
- UINT32_C(1146760842), UINT32_C(1146760842)) },
702
- { UINT32_C(3800978822),
703
- simde_x_vloadq_u32(UINT32_C(3800978822), UINT32_C(3800978822),
704
- UINT32_C(3800978822), UINT32_C(3800978822)) },
705
- { UINT32_C( 414287630),
706
- simde_x_vloadq_u32(UINT32_C( 414287630), UINT32_C( 414287630),
707
- UINT32_C( 414287630), UINT32_C( 414287630)) },
708
- { UINT32_C(1867338402),
709
- simde_x_vloadq_u32(UINT32_C(1867338402), UINT32_C(1867338402),
710
- UINT32_C(1867338402), UINT32_C(1867338402)) }
711
- };
712
-
713
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
714
- simde_uint32x4_t r = simde_vdupq_n_u32(test_vec[i].a);
715
- simde_neon_assert_uint32x4(r, ==, test_vec[i].r);
716
- }
717
-
718
- return MUNIT_OK;
719
- }
720
-
721
- static MunitResult
722
- test_simde_vdupq_n_u64(const MunitParameter params[], void* data) {
723
- (void) params;
724
- (void) data;
725
-
726
- const struct {
727
- uint64_t a;
728
- simde_uint64x2_t r;
729
- } test_vec[8] = {
730
- { UINT64_C(3848393335905724000),
731
- simde_x_vloadq_u64(UINT64_C(3848393335905724000), UINT64_C(3848393335905724000)) },
732
- { UINT64_C(7521514816403184111),
733
- simde_x_vloadq_u64(UINT64_C(7521514816403184111), UINT64_C(7521514816403184111)) },
734
- { UINT64_C(10503742284511346378),
735
- simde_x_vloadq_u64(UINT64_C(10503742284511346378), UINT64_C(10503742284511346378)) },
736
- { UINT64_C(3888914191608226801),
737
- simde_x_vloadq_u64(UINT64_C(3888914191608226801), UINT64_C(3888914191608226801)) },
738
- { UINT64_C(10404224794072508643),
739
- simde_x_vloadq_u64(UINT64_C(10404224794072508643), UINT64_C(10404224794072508643)) },
740
- { UINT64_C(6148912474229806797),
741
- simde_x_vloadq_u64(UINT64_C(6148912474229806797), UINT64_C(6148912474229806797)) },
742
- { UINT64_C(6257259334766132716),
743
- simde_x_vloadq_u64(UINT64_C(6257259334766132716), UINT64_C(6257259334766132716)) },
744
- { UINT64_C(6904870949189420238),
745
- simde_x_vloadq_u64(UINT64_C(6904870949189420238), UINT64_C(6904870949189420238)) }
746
- };
747
-
748
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
749
- simde_uint64x2_t r = simde_vdupq_n_u64(test_vec[i].a);
750
- simde_neon_assert_uint64x2(r, ==, test_vec[i].r);
751
- }
752
-
753
- return MUNIT_OK;
754
- }
755
-
756
- static MunitResult
757
- test_simde_vdupq_n_f32(const MunitParameter params[], void* data) {
758
- (void) params;
759
- (void) data;
760
-
761
- const struct {
762
- simde_float32 a;
763
- simde_float32x4_t r;
764
- } test_vec[8] = {
765
- { SIMDE_FLOAT32_C( 202.87),
766
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( 202.87), SIMDE_FLOAT32_C( 202.87),
767
- SIMDE_FLOAT32_C( 202.87), SIMDE_FLOAT32_C( 202.87)) },
768
- { SIMDE_FLOAT32_C( 673.43),
769
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( 673.43), SIMDE_FLOAT32_C( 673.43),
770
- SIMDE_FLOAT32_C( 673.43), SIMDE_FLOAT32_C( 673.43)) },
771
- { SIMDE_FLOAT32_C( -450.12),
772
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( -450.12), SIMDE_FLOAT32_C( -450.12),
773
- SIMDE_FLOAT32_C( -450.12), SIMDE_FLOAT32_C( -450.12)) },
774
- { SIMDE_FLOAT32_C( 35.07),
775
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( 35.07), SIMDE_FLOAT32_C( 35.07),
776
- SIMDE_FLOAT32_C( 35.07), SIMDE_FLOAT32_C( 35.07)) },
777
- { SIMDE_FLOAT32_C( 403.71),
778
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( 403.71), SIMDE_FLOAT32_C( 403.71),
779
- SIMDE_FLOAT32_C( 403.71), SIMDE_FLOAT32_C( 403.71)) },
780
- { SIMDE_FLOAT32_C( 332.31),
781
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( 332.31), SIMDE_FLOAT32_C( 332.31),
782
- SIMDE_FLOAT32_C( 332.31), SIMDE_FLOAT32_C( 332.31)) },
783
- { SIMDE_FLOAT32_C( -965.58),
784
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( -965.58), SIMDE_FLOAT32_C( -965.58),
785
- SIMDE_FLOAT32_C( -965.58), SIMDE_FLOAT32_C( -965.58)) },
786
- { SIMDE_FLOAT32_C( -646.22),
787
- simde_x_vloadq_f32(SIMDE_FLOAT32_C( -646.22), SIMDE_FLOAT32_C( -646.22),
788
- SIMDE_FLOAT32_C( -646.22), SIMDE_FLOAT32_C( -646.22)) }
789
- };
790
-
791
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
792
- simde_float32x4_t r = simde_vdupq_n_f32(test_vec[i].a);
793
- simde_neon_assert_float32x4_equal(r, test_vec[i].r, 1);
794
- }
795
-
796
- return MUNIT_OK;
797
- }
798
-
799
- static MunitResult
800
- test_simde_vdupq_n_f64(const MunitParameter params[], void* data) {
801
- (void) params;
802
- (void) data;
803
-
804
- const struct {
805
- simde_float64 a;
806
- simde_float64x2_t r;
807
- } test_vec[8] = {
808
- { SIMDE_FLOAT64_C( 384.02),
809
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( 384.02), SIMDE_FLOAT64_C( 384.02)) },
810
- { SIMDE_FLOAT64_C( -82.35),
811
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( -82.35), SIMDE_FLOAT64_C( -82.35)) },
812
- { SIMDE_FLOAT64_C( -747.51),
813
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( -747.51), SIMDE_FLOAT64_C( -747.51)) },
814
- { SIMDE_FLOAT64_C( 819.29),
815
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( 819.29), SIMDE_FLOAT64_C( 819.29)) },
816
- { SIMDE_FLOAT64_C( -252.78),
817
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( -252.78), SIMDE_FLOAT64_C( -252.78)) },
818
- { SIMDE_FLOAT64_C( -146.98),
819
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( -146.98), SIMDE_FLOAT64_C( -146.98)) },
820
- { SIMDE_FLOAT64_C( 148.38),
821
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( 148.38), SIMDE_FLOAT64_C( 148.38)) },
822
- { SIMDE_FLOAT64_C( 401.85),
823
- simde_x_vloadq_f64(SIMDE_FLOAT64_C( 401.85), SIMDE_FLOAT64_C( 401.85)) }
824
- };
825
-
826
- for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])); i++) {
827
- simde_float64x2_t r = simde_vdupq_n_f64(test_vec[i].a);
828
- simde_neon_assert_float64x2_equal(r, test_vec[i].r, 1);
829
- }
830
-
831
- return MUNIT_OK;
832
- }
833
-
834
- #endif /* defined(SIMDE_NEON_NATIVE) || defined(SIMDE_NO_NATIVE) || defined(SIMDE_ALWAYS_BUILD_NATIVE_TESTS) */
835
-
836
- HEDLEY_DIAGNOSTIC_PUSH
837
- HEDLEY_DIAGNOSTIC_DISABLE_CAST_QUAL
838
-
839
- static MunitTest test_suite_tests[] = {
840
- #if defined(SIMDE_NEON_NATIVE) || defined(SIMDE_NO_NATIVE) || defined(SIMDE_ALWAYS_BUILD_NATIVE_TESTS)
841
- SIMDE_TESTS_NEON_DEFINE_TEST(n_s8),
842
- SIMDE_TESTS_NEON_DEFINE_TEST(n_s16),
843
- SIMDE_TESTS_NEON_DEFINE_TEST(n_s32),
844
- SIMDE_TESTS_NEON_DEFINE_TEST(n_s64),
845
- SIMDE_TESTS_NEON_DEFINE_TEST(n_u8),
846
- SIMDE_TESTS_NEON_DEFINE_TEST(n_u16),
847
- SIMDE_TESTS_NEON_DEFINE_TEST(n_u32),
848
- SIMDE_TESTS_NEON_DEFINE_TEST(n_u64),
849
- SIMDE_TESTS_NEON_DEFINE_TEST(n_f32),
850
- SIMDE_TESTS_NEON_DEFINE_TEST(n_f64),
851
-
852
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_s8),
853
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_s16),
854
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_s32),
855
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_s64),
856
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_u8),
857
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_u16),
858
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_u32),
859
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_u64),
860
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_f32),
861
- SIMDE_TESTS_NEON_DEFINE_TEST_FULL(q, n_f64),
862
- #endif /* defined(SIMDE_NEON_NATIVE) || defined(SIMDE_NO_NATIVE) || defined(SIMDE_ALWAYS_BUILD_NATIVE_TESTS) */
863
-
864
- { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }
865
- };
866
-
867
- HEDLEY_C_DECL MunitSuite* SIMDE_TESTS_GENERATE_SYMBOL(SIMDE_TESTS_CURRENT_NEON_OP)(void) {
868
- static MunitSuite suite = { (char*) "/v" HEDLEY_STRINGIFY(SIMDE_TESTS_CURRENT_NEON_OP), test_suite_tests, NULL, 1, MUNIT_SUITE_OPTION_NONE };
869
-
870
- return &suite;
871
- }
872
-
873
- HEDLEY_DIAGNOSTIC_POP