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,343 +0,0 @@
1
- /* Permission is hereby granted, free of charge, to any person
2
- * obtaining a copy of this software and associated documentation
3
- * files (the "Software"), to deal in the Software without
4
- * restriction, including without limitation the rights to use, copy,
5
- * modify, merge, publish, distribute, sublicense, and/or sell copies
6
- * of the Software, and to permit persons to whom the Software is
7
- * furnished to do so, subject to the following conditions:
8
- *
9
- * The above copyright notice and this permission notice shall be
10
- * included in all copies or substantial portions of the Software.
11
- *
12
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
16
- * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
17
- * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19
- * SOFTWARE.
20
- *
21
- * Copyright:
22
- * 2017-2020 Evan Nemerson <evan@nemerson.com>
23
- */
24
-
25
- #if !defined(SIMDE__SSE3_H)
26
- # if !defined(SIMDE__SSE3_H)
27
- # define SIMDE__SSE3_H
28
- # endif
29
- # include "sse2.h"
30
-
31
- HEDLEY_DIAGNOSTIC_PUSH
32
- SIMDE_DISABLE_UNWANTED_DIAGNOSTICS
33
-
34
- # if defined(SIMDE_SSE3_NATIVE)
35
- # undef SIMDE_SSE3_NATIVE
36
- # endif
37
- # if defined(SIMDE_ARCH_X86_SSE3) && !defined(SIMDE_SSE3_NO_NATIVE) && !defined(SIMDE_NO_NATIVE)
38
- # define SIMDE_SSE3_NATIVE
39
- # elif defined(SIMDE_ARCH_ARM_NEON) && !defined(SIMDE_SSE3_NO_NEON) && !defined(SIMDE_NO_NEON)
40
- # define SIMDE_SSE3_NEON
41
- # endif
42
-
43
- # if defined(SIMDE_SSE3_NATIVE) && !defined(SIMDE_SSE2_NATIVE)
44
- # if defined(SIMDE_SSE3_FORCE_NATIVE)
45
- # error Native SSE3 support requires native SSE2 support
46
- # else
47
- HEDLEY_WARNING("Native SSE3 support requires native SSE2 support, disabling")
48
- # undef SIMDE_SSE3_NATIVE
49
- # endif
50
- # elif defined(SIMDE_SSE3_NEON) && !defined(SIMDE_SSE2_NEON)
51
- HEDLEY_WARNING("SSE3 NEON support requires SSE2 NEON support, disabling")
52
- # undef SIMDE_SSE3_NEON
53
- # endif
54
-
55
- # if defined(SIMDE_SSE3_NATIVE)
56
- # include <pmmintrin.h>
57
- # endif
58
-
59
- #if !defined(SIMDE_SSE3_NATIVE) && defined(SIMDE_ENABLE_NATIVE_ALIASES)
60
- # define SIMDE_SSE3_ENABLE_NATIVE_ALIASES
61
- #endif
62
-
63
- SIMDE__BEGIN_DECLS
64
-
65
- SIMDE__FUNCTION_ATTRIBUTES
66
- simde__m128d
67
- simde_mm_addsub_pd (simde__m128d a, simde__m128d b) {
68
- #if defined(SIMDE_SSE3_NATIVE)
69
- return _mm_addsub_pd(a, b);
70
- #else
71
- simde__m128d_private
72
- r_,
73
- a_ = simde__m128d_to_private(a),
74
- b_ = simde__m128d_to_private(b);
75
-
76
- #if defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
77
- r_.f64 = SIMDE__SHUFFLE_VECTOR(64, 16, a_.f64 - b_.f64, a_.f64 + b_.f64, 0, 3);
78
- #else
79
- for (size_t i = 0 ; i < (sizeof(r_.f64) / sizeof(r_.f64[0])) ; i += 2) {
80
- r_.f64[ i ] = a_.f64[ i ] - b_.f64[ i ];
81
- r_.f64[1 + i] = a_.f64[1 + i] + b_.f64[1 + i];
82
- }
83
- #endif
84
-
85
- return simde__m128d_from_private(r_);
86
- #endif
87
- }
88
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
89
- # define _mm_addsub_pd(a, b) simde_mm_addsub_pd(a, b)
90
- #endif
91
-
92
- SIMDE__FUNCTION_ATTRIBUTES
93
- simde__m128
94
- simde_mm_addsub_ps (simde__m128 a, simde__m128 b) {
95
- #if defined(SIMDE_SSE3_NATIVE)
96
- return _mm_addsub_ps(a, b);
97
- #else
98
- simde__m128_private
99
- r_,
100
- a_ = simde__m128_to_private(a),
101
- b_ = simde__m128_to_private(b);
102
-
103
- #if defined(SIMDE_SSE3_NEON) && defined(SIMDE_ARCH_AARCH64)
104
- float32x4_t rs = vsubq_f32(a_.neon_f32, b_.neon_f32);
105
- float32x4_t ra = vaddq_f32(a_.neon_f32, b_.neon_f32);
106
- return vtrn2q_f32(vreinterpretq_f32_s32(vrev64q_s32(vreinterpretq_s32_f32(rs))), ra);
107
- #elif defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
108
- r_.f32 = SIMDE__SHUFFLE_VECTOR(32, 16, a_.f32 - b_.f32, a_.f32 + b_.f32, 0, 5, 2, 7);
109
- #else
110
- for (size_t i = 0 ; i < (sizeof(r_.f32) / sizeof(r_.f32[0])) ; i += 2) {
111
- r_.f32[ i ] = a_.f32[ i ] - b_.f32[ i ];
112
- r_.f32[1 + i] = a_.f32[1 + i] + b_.f32[1 + i];
113
- }
114
- #endif
115
-
116
- return simde__m128_from_private(r_);
117
- #endif
118
- }
119
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
120
- # define _mm_addsub_ps(a, b) simde_mm_addsub_ps(a, b)
121
- #endif
122
-
123
- SIMDE__FUNCTION_ATTRIBUTES
124
- simde__m128d
125
- simde_mm_hadd_pd (simde__m128d a, simde__m128d b) {
126
- #if defined(SIMDE_SSE3_NATIVE)
127
- return _mm_hadd_pd(a, b);
128
- #else
129
- simde__m128d_private
130
- r_,
131
- a_ = simde__m128d_to_private(a),
132
- b_ = simde__m128d_to_private(b);
133
-
134
- #if defined(SIMDE_SSE3_NEON) && defined(SIMDE_ARCH_AARCH64)
135
- simde_float64 res[2] = { vaddvq_f64(a_.neon_f64), vaddvq_f64(b_.neon_f64)};
136
- r_.neon_f64 = vld1q_f64(res);
137
- #elif defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
138
- r_.f64 =
139
- SIMDE__SHUFFLE_VECTOR(64, 16, a_.f64, b_.f64, 0, 2) +
140
- SIMDE__SHUFFLE_VECTOR(64, 16, a_.f64, b_.f64, 1, 3);
141
- #else
142
- r_.f64[0] = a_.f64[0] + a_.f64[1];
143
- r_.f64[1] = b_.f64[0] + b_.f64[1];
144
- #endif
145
-
146
- return simde__m128d_from_private(r_);
147
- #endif
148
- }
149
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
150
- # define _mm_hadd_pd(a, b) simde_mm_hadd_pd(a, b)
151
- #endif
152
-
153
- SIMDE__FUNCTION_ATTRIBUTES
154
- simde__m128
155
- simde_mm_hadd_ps (simde__m128 a, simde__m128 b) {
156
- #if defined(SIMDE_SSE3_NATIVE)
157
- return _mm_hadd_ps(a, b);
158
- #else
159
- simde__m128_private
160
- r_,
161
- a_ = simde__m128_to_private(a),
162
- b_ = simde__m128_to_private(b);
163
-
164
- #if defined(SIMDE_SSE3_NEON) && defined(SIMDE_ARCH_AARCH64)
165
- r_.f32 = vpaddq_f32(a_.neon_f32, b_.neon_f32);
166
- #elif defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
167
- r_.f32 =
168
- SIMDE__SHUFFLE_VECTOR(32, 16, a_.f32, b_.f32, 0, 2, 4, 6) +
169
- SIMDE__SHUFFLE_VECTOR(32, 16, a_.f32, b_.f32, 1, 3, 5, 7);
170
- #else
171
- r_.f32[0] = a_.f32[0] + a_.f32[1];
172
- r_.f32[1] = a_.f32[2] + a_.f32[3];
173
- r_.f32[2] = b_.f32[0] + b_.f32[1];
174
- r_.f32[3] = b_.f32[2] + b_.f32[3];
175
- #endif
176
-
177
- return simde__m128_from_private(r_);
178
- #endif
179
- }
180
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
181
- # define _mm_hadd_ps(a, b) simde_mm_hadd_ps(a, b)
182
- #endif
183
-
184
- SIMDE__FUNCTION_ATTRIBUTES
185
- simde__m128d
186
- simde_mm_hsub_pd (simde__m128d a, simde__m128d b) {
187
- #if defined(SIMDE_SSE3_NATIVE)
188
- return _mm_hsub_pd(a, b);
189
- #else
190
- simde__m128d_private
191
- r_,
192
- a_ = simde__m128d_to_private(a),
193
- b_ = simde__m128d_to_private(b);
194
-
195
- #if defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
196
- r_.f64 =
197
- SIMDE__SHUFFLE_VECTOR(64, 16, a_.f64, b_.f64, 0, 2) -
198
- SIMDE__SHUFFLE_VECTOR(64, 16, a_.f64, b_.f64, 1, 3);
199
- #else
200
- r_.f64[0] = a_.f64[0] - a_.f64[1];
201
- r_.f64[1] = b_.f64[0] - b_.f64[1];
202
- #endif
203
-
204
- return simde__m128d_from_private(r_);
205
- #endif
206
- }
207
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
208
- # define _mm_hsub_pd(a, b) simde_mm_hsub_pd(a, b)
209
- #endif
210
-
211
- SIMDE__FUNCTION_ATTRIBUTES
212
- simde__m128
213
- simde_mm_hsub_ps (simde__m128 a, simde__m128 b) {
214
- #if defined(SIMDE_SSE3_NATIVE)
215
- return _mm_hsub_ps(a, b);
216
- #else
217
- simde__m128_private
218
- r_,
219
- a_ = simde__m128_to_private(a),
220
- b_ = simde__m128_to_private(b);
221
-
222
- #if defined(SIMDE_SSE3_NEON) && defined(SIMDE_ARCH_AARCH64)
223
- r_.f32 = vsubq_f32(vuzp1q_f32(a_.neon_f32, b_.neon_f32), vuzp2q_f32(a_.neon_f32, b_.neon_f32));
224
- #elif defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
225
- r_.f32 =
226
- SIMDE__SHUFFLE_VECTOR(32, 16, a_.f32, b_.f32, 0, 2, 4, 6) -
227
- SIMDE__SHUFFLE_VECTOR(32, 16, a_.f32, b_.f32, 1, 3, 5, 7);
228
- #else
229
- r_.f32[0] = a_.f32[0] - a_.f32[1];
230
- r_.f32[1] = a_.f32[2] - a_.f32[3];
231
- r_.f32[2] = b_.f32[0] - b_.f32[1];
232
- r_.f32[3] = b_.f32[2] - b_.f32[3];
233
- #endif
234
-
235
- return simde__m128_from_private(r_);
236
- #endif
237
- }
238
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
239
- # define _mm_hsub_ps(a, b) simde_mm_hsub_ps(a, b)
240
- #endif
241
-
242
- SIMDE__FUNCTION_ATTRIBUTES
243
- simde__m128i
244
- simde_mm_lddqu_si128 (simde__m128i const* mem_addr) {
245
- #if defined(SIMDE_SSE3_NATIVE)
246
- return _mm_lddqu_si128(mem_addr);
247
- #else
248
- simde__m128i_private r_;
249
-
250
- #if defined(SIMDE_SSE3_NEON)
251
- r_.neon_i32 = vld1q_s32(HEDLEY_REINTERPRET_CAST(int32_t const*, mem_addr));
252
- #else
253
- simde_memcpy(&r_, mem_addr, sizeof(r_));
254
- #endif
255
-
256
- return simde__m128i_from_private(r_);
257
- #endif
258
- }
259
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
260
- # define _mm_lddqu_si128(mem_addr) simde_mm_lddqu_si128(mem_addr)
261
- #endif
262
-
263
- SIMDE__FUNCTION_ATTRIBUTES
264
- simde__m128d
265
- simde_mm_movedup_pd (simde__m128d a) {
266
- #if defined(SIMDE_SSE3_NATIVE)
267
- return _mm_movedup_pd(a);
268
- #else
269
- simde__m128d_private
270
- r_,
271
- a_ = simde__m128d_to_private(a);
272
-
273
- #if defined(SIMDE_VECTOR_SUBSCRIPT_OPS) && defined(SIMDE__SHUFFLE_VECTOR)
274
- r_.f64 = SIMDE__SHUFFLE_VECTOR(64, 16, a_.f64, a_.f64, 0, 0);
275
- #else
276
- r_.f64[0] = a_.f64[0];
277
- r_.f64[1] = a_.f64[0];
278
- #endif
279
-
280
- return simde__m128d_from_private(r_);
281
- #endif
282
- }
283
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
284
- # define _mm_movedup_pd(a) simde_mm_movedup_pd(a)
285
- #endif
286
-
287
- SIMDE__FUNCTION_ATTRIBUTES
288
- simde__m128
289
- simde_mm_movehdup_ps (simde__m128 a) {
290
- #if defined(SIMDE_SSE3_NATIVE)
291
- return _mm_movehdup_ps(a);
292
- #else
293
- simde__m128_private
294
- r_,
295
- a_ = simde__m128_to_private(a);
296
-
297
- #if defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
298
- r_.f32 = SIMDE__SHUFFLE_VECTOR(32, 16, a_.f32, a_.f32, 1, 1, 3, 3);
299
- #else
300
- r_.f32[0] = a_.f32[1];
301
- r_.f32[1] = a_.f32[1];
302
- r_.f32[2] = a_.f32[3];
303
- r_.f32[3] = a_.f32[3];
304
- #endif
305
-
306
- return simde__m128_from_private(r_);
307
- #endif
308
- }
309
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
310
- # define _mm_movehdup_ps(a) simde_mm_movehdup_ps(a)
311
- #endif
312
-
313
- SIMDE__FUNCTION_ATTRIBUTES
314
- simde__m128
315
- simde_mm_moveldup_ps (simde__m128 a) {
316
- #if defined(SIMDE__SSE3_NATIVE)
317
- return _mm_moveldup_ps(a);
318
- #else
319
- simde__m128_private
320
- r_,
321
- a_ = simde__m128_to_private(a);
322
-
323
- #if defined(SIMDE_ASSUME_VECTORIZATION) && defined(SIMDE__SHUFFLE_VECTOR)
324
- r_.f32 = SIMDE__SHUFFLE_VECTOR(32, 16, a_.f32, a_.f32, 0, 0, 2, 2);
325
- #else
326
- r_.f32[0] = a_.f32[0];
327
- r_.f32[1] = a_.f32[0];
328
- r_.f32[2] = a_.f32[2];
329
- r_.f32[3] = a_.f32[2];
330
- #endif
331
-
332
- return simde__m128_from_private(r_);
333
- #endif
334
- }
335
- #if defined(SIMDE_SSE3_ENABLE_NATIVE_ALIASES)
336
- # define _mm_moveldup_ps(a) simde_mm_moveldup_ps(a)
337
- #endif
338
-
339
- SIMDE__END_DECLS
340
-
341
- HEDLEY_DIAGNOSTIC_POP
342
-
343
- #endif /* !defined(SIMDE__SSE3_H) */