minimap2 0.2.25.0 → 0.2.25.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -3
  3. data/ext/minimap2/Makefile +6 -2
  4. data/ext/minimap2/NEWS.md +38 -0
  5. data/ext/minimap2/README.md +9 -3
  6. data/ext/minimap2/align.c +5 -3
  7. data/ext/minimap2/cookbook.md +2 -2
  8. data/ext/minimap2/format.c +7 -4
  9. data/ext/minimap2/kalloc.c +20 -1
  10. data/ext/minimap2/kalloc.h +13 -2
  11. data/ext/minimap2/ksw2.h +1 -0
  12. data/ext/minimap2/ksw2_extd2_sse.c +1 -1
  13. data/ext/minimap2/ksw2_exts2_sse.c +79 -40
  14. data/ext/minimap2/ksw2_extz2_sse.c +1 -1
  15. data/ext/minimap2/lchain.c +15 -16
  16. data/ext/minimap2/lib/simde/CONTRIBUTING.md +114 -0
  17. data/ext/minimap2/lib/simde/COPYING +20 -0
  18. data/ext/minimap2/lib/simde/README.md +333 -0
  19. data/ext/minimap2/lib/simde/amalgamate.py +58 -0
  20. data/ext/minimap2/lib/simde/meson.build +33 -0
  21. data/ext/minimap2/lib/simde/netlify.toml +20 -0
  22. data/ext/minimap2/lib/simde/simde/arm/neon/float32x2.h +140 -0
  23. data/ext/minimap2/lib/simde/simde/arm/neon/float32x4.h +137 -0
  24. data/ext/minimap2/lib/simde/simde/arm/neon/float64x1.h +142 -0
  25. data/ext/minimap2/lib/simde/simde/arm/neon/float64x2.h +145 -0
  26. data/ext/minimap2/lib/simde/simde/arm/neon/int16x4.h +140 -0
  27. data/ext/minimap2/lib/simde/simde/arm/neon/int16x8.h +145 -0
  28. data/ext/minimap2/lib/simde/simde/arm/neon/int32x2.h +140 -0
  29. data/ext/minimap2/lib/simde/simde/arm/neon/int32x4.h +143 -0
  30. data/ext/minimap2/lib/simde/simde/arm/neon/int64x1.h +137 -0
  31. data/ext/minimap2/lib/simde/simde/arm/neon/int64x2.h +141 -0
  32. data/ext/minimap2/lib/simde/simde/arm/neon/int8x16.h +147 -0
  33. data/ext/minimap2/lib/simde/simde/arm/neon/int8x8.h +141 -0
  34. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x4.h +134 -0
  35. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x8.h +138 -0
  36. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x2.h +134 -0
  37. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x4.h +137 -0
  38. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x1.h +131 -0
  39. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x2.h +135 -0
  40. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x16.h +141 -0
  41. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x8.h +135 -0
  42. data/ext/minimap2/lib/simde/simde/arm/neon.h +97 -0
  43. data/ext/minimap2/lib/simde/simde/check.h +267 -0
  44. data/ext/minimap2/lib/simde/simde/debug-trap.h +83 -0
  45. data/ext/minimap2/lib/simde/simde/hedley.h +1899 -0
  46. data/ext/minimap2/lib/simde/simde/simde-arch.h +445 -0
  47. data/ext/minimap2/lib/simde/simde/simde-common.h +697 -0
  48. data/ext/minimap2/lib/simde/simde/x86/avx.h +5385 -0
  49. data/ext/minimap2/lib/simde/simde/x86/avx2.h +2402 -0
  50. data/ext/minimap2/lib/simde/simde/x86/avx512bw.h +391 -0
  51. data/ext/minimap2/lib/simde/simde/x86/avx512f.h +3389 -0
  52. data/ext/minimap2/lib/simde/simde/x86/avx512vl.h +112 -0
  53. data/ext/minimap2/lib/simde/simde/x86/fma.h +659 -0
  54. data/ext/minimap2/lib/simde/simde/x86/mmx.h +2210 -0
  55. data/ext/minimap2/lib/simde/simde/x86/sse.h +3696 -0
  56. data/ext/minimap2/lib/simde/simde/x86/sse2.h +5991 -0
  57. data/ext/minimap2/lib/simde/simde/x86/sse3.h +343 -0
  58. data/ext/minimap2/lib/simde/simde/x86/sse4.1.h +1783 -0
  59. data/ext/minimap2/lib/simde/simde/x86/sse4.2.h +105 -0
  60. data/ext/minimap2/lib/simde/simde/x86/ssse3.h +1053 -0
  61. data/ext/minimap2/lib/simde/simde/x86/svml.h +543 -0
  62. data/ext/minimap2/lib/simde/test/CMakeLists.txt +166 -0
  63. data/ext/minimap2/lib/simde/test/arm/meson.build +4 -0
  64. data/ext/minimap2/lib/simde/test/arm/neon/meson.build +23 -0
  65. data/ext/minimap2/lib/simde/test/arm/neon/skel.c +871 -0
  66. data/ext/minimap2/lib/simde/test/arm/neon/test-neon-internal.h +134 -0
  67. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.c +39 -0
  68. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.h +10 -0
  69. data/ext/minimap2/lib/simde/test/arm/neon/vadd.c +1260 -0
  70. data/ext/minimap2/lib/simde/test/arm/neon/vdup_n.c +873 -0
  71. data/ext/minimap2/lib/simde/test/arm/neon/vmul.c +1084 -0
  72. data/ext/minimap2/lib/simde/test/arm/neon/vsub.c +1260 -0
  73. data/ext/minimap2/lib/simde/test/arm/test-arm-internal.h +18 -0
  74. data/ext/minimap2/lib/simde/test/arm/test-arm.c +20 -0
  75. data/ext/minimap2/lib/simde/test/arm/test-arm.h +8 -0
  76. data/ext/minimap2/lib/simde/test/cmake/AddCompilerFlags.cmake +171 -0
  77. data/ext/minimap2/lib/simde/test/cmake/ExtraWarningFlags.cmake +68 -0
  78. data/ext/minimap2/lib/simde/test/meson.build +64 -0
  79. data/ext/minimap2/lib/simde/test/munit/COPYING +21 -0
  80. data/ext/minimap2/lib/simde/test/munit/Makefile +55 -0
  81. data/ext/minimap2/lib/simde/test/munit/README.md +54 -0
  82. data/ext/minimap2/lib/simde/test/munit/example.c +351 -0
  83. data/ext/minimap2/lib/simde/test/munit/meson.build +37 -0
  84. data/ext/minimap2/lib/simde/test/munit/munit.c +2055 -0
  85. data/ext/minimap2/lib/simde/test/munit/munit.h +535 -0
  86. data/ext/minimap2/lib/simde/test/run-tests.c +20 -0
  87. data/ext/minimap2/lib/simde/test/run-tests.h +260 -0
  88. data/ext/minimap2/lib/simde/test/x86/avx.c +13752 -0
  89. data/ext/minimap2/lib/simde/test/x86/avx2.c +9977 -0
  90. data/ext/minimap2/lib/simde/test/x86/avx512bw.c +2664 -0
  91. data/ext/minimap2/lib/simde/test/x86/avx512f.c +10416 -0
  92. data/ext/minimap2/lib/simde/test/x86/avx512vl.c +210 -0
  93. data/ext/minimap2/lib/simde/test/x86/fma.c +2557 -0
  94. data/ext/minimap2/lib/simde/test/x86/meson.build +33 -0
  95. data/ext/minimap2/lib/simde/test/x86/mmx.c +2878 -0
  96. data/ext/minimap2/lib/simde/test/x86/skel.c +2984 -0
  97. data/ext/minimap2/lib/simde/test/x86/sse.c +5121 -0
  98. data/ext/minimap2/lib/simde/test/x86/sse2.c +9860 -0
  99. data/ext/minimap2/lib/simde/test/x86/sse3.c +486 -0
  100. data/ext/minimap2/lib/simde/test/x86/sse4.1.c +3446 -0
  101. data/ext/minimap2/lib/simde/test/x86/sse4.2.c +101 -0
  102. data/ext/minimap2/lib/simde/test/x86/ssse3.c +2084 -0
  103. data/ext/minimap2/lib/simde/test/x86/svml.c +1545 -0
  104. data/ext/minimap2/lib/simde/test/x86/test-avx.h +16 -0
  105. data/ext/minimap2/lib/simde/test/x86/test-avx512.h +25 -0
  106. data/ext/minimap2/lib/simde/test/x86/test-mmx.h +13 -0
  107. data/ext/minimap2/lib/simde/test/x86/test-sse.h +13 -0
  108. data/ext/minimap2/lib/simde/test/x86/test-sse2.h +13 -0
  109. data/ext/minimap2/lib/simde/test/x86/test-x86-internal.h +196 -0
  110. data/ext/minimap2/lib/simde/test/x86/test-x86.c +48 -0
  111. data/ext/minimap2/lib/simde/test/x86/test-x86.h +8 -0
  112. data/ext/minimap2/main.c +13 -6
  113. data/ext/minimap2/map.c +0 -5
  114. data/ext/minimap2/minimap.h +40 -31
  115. data/ext/minimap2/minimap2.1 +19 -5
  116. data/ext/minimap2/misc/paftools.js +545 -24
  117. data/ext/minimap2/options.c +1 -1
  118. data/ext/minimap2/pyproject.toml +2 -0
  119. data/ext/minimap2/python/mappy.pyx +3 -1
  120. data/ext/minimap2/seed.c +1 -1
  121. data/ext/minimap2/setup.py +32 -22
  122. data/lib/minimap2/version.rb +1 -1
  123. metadata +100 -3
@@ -0,0 +1,343 @@
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) */