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,445 @@
1
+ /* Architecture detection
2
+ * Created by Evan Nemerson <evan@nemerson.com>
3
+ *
4
+ * To the extent possible under law, the authors have waived all
5
+ * copyright and related or neighboring rights to this code. For
6
+ * details, see the Creative Commons Zero 1.0 Universal license at
7
+ * <https://creativecommons.org/publicdomain/zero/1.0/>
8
+ *
9
+ * Different compilers define different preprocessor macros for the
10
+ * same architecture. This is an attempt to provide a single
11
+ * interface which is usable on any compiler.
12
+ *
13
+ * In general, a macro named SIMDE_ARCH_* is defined for each
14
+ * architecture the CPU supports. When there are multiple possible
15
+ * versions, we try to define the macro to the target version. For
16
+ * example, if you want to check for i586+, you could do something
17
+ * like:
18
+ *
19
+ * #if defined(SIMDE_ARCH_X86) && (SIMDE_ARCH_X86 >= 5)
20
+ * ...
21
+ * #endif
22
+ *
23
+ * You could also just check that SIMDE_ARCH_X86 >= 5 without checking
24
+ * if it's defined first, but some compilers may emit a warning about
25
+ * an undefined macro being used (e.g., GCC with -Wundef).
26
+ *
27
+ * This was originally created for SIMDe
28
+ * <https://github.com/nemequ/simde> (hence the prefix), but this
29
+ * header has no dependencies and may be used anywhere. It is
30
+ * originally based on information from
31
+ * <https://sourceforge.net/p/predef/wiki/Architectures/>, though it
32
+ * has been enhanced with additional information.
33
+ *
34
+ * If you improve this file, or find a bug, please file the issue at
35
+ * <https://github.com/nemequ/simde/issues>. If you copy this into
36
+ * your project, even if you change the prefix, please keep the links
37
+ * to SIMDe intact so others know where to report issues, submit
38
+ * enhancements, and find the latest version. */
39
+
40
+ #if !defined(SIMDE_ARCH_H)
41
+ #define SIMDE_ARCH_H
42
+
43
+ /* Alpha
44
+ <https://en.wikipedia.org/wiki/DEC_Alpha> */
45
+ #if defined(__alpha__) || defined(__alpha) || defined(_M_ALPHA)
46
+ # if defined(__alpha_ev6__)
47
+ # define SIMDE_ARCH_ALPHA 6
48
+ # elif defined(__alpha_ev5__)
49
+ # define SIMDE_ARCH_ALPHA 5
50
+ # elif defined(__alpha_ev4__)
51
+ # define SIMDE_ARCH_ALPHA 4
52
+ # else
53
+ # define SIMDE_ARCH_ALPHA 1
54
+ # endif
55
+ #endif
56
+
57
+ /* Atmel AVR
58
+ <https://en.wikipedia.org/wiki/Atmel_AVR> */
59
+ #if defined(__AVR_ARCH__)
60
+ # define SIMDE_ARCH_AVR __AVR_ARCH__
61
+ #endif
62
+
63
+ /* AMD64 / x86_64
64
+ <https://en.wikipedia.org/wiki/X86-64> */
65
+ #if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X66) || defined(_M_AMD64)
66
+ # define SIMDE_ARCH_AMD64 1000
67
+ #endif
68
+
69
+ /* ARM
70
+ <https://en.wikipedia.org/wiki/ARM_architecture> */
71
+ #if defined(__ARM_ARCH_8A__)
72
+ # define SIMDE_ARCH_ARM 82
73
+ #elif defined(__ARM_ARCH_8R__)
74
+ # define SIMDE_ARCH_ARM 81
75
+ #elif defined(__ARM_ARCH_8__)
76
+ # define SIMDE_ARCH_ARM 80
77
+ #elif defined(__ARM_ARCH_7S__)
78
+ # define SIMDE_ARCH_ARM 74
79
+ #elif defined(__ARM_ARCH_7M__)
80
+ # define SIMDE_ARCH_ARM 73
81
+ #elif defined(__ARM_ARCH_7R__)
82
+ # define SIMDE_ARCH_ARM 72
83
+ #elif defined(__ARM_ARCH_7A__)
84
+ # define SIMDE_ARCH_ARM 71
85
+ #elif defined(__ARM_ARCH_7__)
86
+ # define SIMDE_ARCH_ARM 70
87
+ #elif defined(__ARM_ARCH)
88
+ # define SIMDE_ARCH_ARM (__ARM_ARCH * 10)
89
+ #elif defined(_M_ARM)
90
+ # define SIMDE_ARCH_ARM (_M_ARM * 10)
91
+ #elif defined(__arm__) || defined(__thumb__) || defined(__TARGET_ARCH_ARM) || defined(_ARM) || defined(_M_ARM) || defined(_M_ARM)
92
+ # define SIMDE_ARCH_ARM 1
93
+ #endif
94
+
95
+ /* AArch64
96
+ <https://en.wikipedia.org/wiki/ARM_architecture> */
97
+ #if defined(__aarch64__) || defined(_M_ARM64)
98
+ # define SIMDE_ARCH_AARCH64 1000
99
+ #endif
100
+
101
+ /* ARM SIMD ISA extensions */
102
+ #if defined(__ARM_NEON)
103
+ # if defined(SIMDE_ARCH_AARCH64)
104
+ # define SIMDE_ARCH_ARM_NEON SIMDE_ARCH_AARCH64
105
+ # elif defined(SIMDE_ARCH_ARM)
106
+ # define SIMDE_ARCH_ARM_NEON SIMDE_ARCH_ARM
107
+ # endif
108
+ #endif
109
+
110
+ /* Blackfin
111
+ <https://en.wikipedia.org/wiki/Blackfin> */
112
+ #if defined(__bfin) || defined(__BFIN__) || defined(__bfin__)
113
+ # define SIMDE_ARCH_BLACKFIN 1
114
+ #endif
115
+
116
+ /* CRIS
117
+ <https://en.wikipedia.org/wiki/ETRAX_CRIS> */
118
+ #if defined(__CRIS_arch_version)
119
+ # define SIMDE_ARCH_CRIS __CRIS_arch_version
120
+ #elif defined(__cris__) || defined(__cris) || defined(__CRIS) || defined(__CRIS__)
121
+ # define SIMDE_ARCH_CRIS 1
122
+ #endif
123
+
124
+ /* Convex
125
+ <https://en.wikipedia.org/wiki/Convex_Computer> */
126
+ #if defined(__convex_c38__)
127
+ # define SIMDE_ARCH_CONVEX 38
128
+ #elif defined(__convex_c34__)
129
+ # define SIMDE_ARCH_CONVEX 34
130
+ #elif defined(__convex_c32__)
131
+ # define SIMDE_ARCH_CONVEX 32
132
+ #elif defined(__convex_c2__)
133
+ # define SIMDE_ARCH_CONVEX 2
134
+ #elif defined(__convex__)
135
+ # define SIMDE_ARCH_CONVEX 1
136
+ #endif
137
+
138
+ /* Adapteva Epiphany
139
+ <https://en.wikipedia.org/wiki/Adapteva_Epiphany> */
140
+ #if defined(__epiphany__)
141
+ # define SIMDE_ARCH_EPIPHANY 1
142
+ #endif
143
+
144
+ /* Fujitsu FR-V
145
+ <https://en.wikipedia.org/wiki/FR-V_(microprocessor)> */
146
+ #if defined(__frv__)
147
+ # define SIMDE_ARCH_FRV 1
148
+ #endif
149
+
150
+ /* H8/300
151
+ <https://en.wikipedia.org/wiki/H8_Family> */
152
+ #if defined(__H8300__)
153
+ # define SIMDE_ARCH_H8300
154
+ #endif
155
+
156
+ /* HP/PA / PA-RISC
157
+ <https://en.wikipedia.org/wiki/PA-RISC> */
158
+ #if defined(__PA8000__) || defined(__HPPA20__) || defined(__RISC2_0__) || defined(_PA_RISC2_0)
159
+ # define SIMDE_ARCH_HPPA 20
160
+ #elif defined(__PA7100__) || defined(__HPPA11__) || defined(_PA_RISC1_1)
161
+ # define SIMDE_ARCH_HPPA 11
162
+ #elif defined(_PA_RISC1_0)
163
+ # define SIMDE_ARCH_HPPA 10
164
+ #elif defined(__hppa__) || defined(__HPPA__) || defined(__hppa)
165
+ # define SIMDE_ARCH_HPPA 1
166
+ #endif
167
+
168
+ /* x86
169
+ <https://en.wikipedia.org/wiki/X86> */
170
+ #if defined(_M_IX86)
171
+ # define SIMDE_ARCH_X86 (_M_IX86 / 100)
172
+ #elif defined(__I86__)
173
+ # define SIMDE_ARCH_X86 __I86__
174
+ #elif defined(i686) || defined(__i686) || defined(__i686__)
175
+ # define SIMDE_ARCH_X86 6
176
+ #elif defined(i586) || defined(__i586) || defined(__i586__)
177
+ # define SIMDE_ARCH_X86 5
178
+ #elif defined(i486) || defined(__i486) || defined(__i486__)
179
+ # define SIMDE_ARCH_X86 4
180
+ #elif defined(i386) || defined(__i386) || defined(__i386__)
181
+ # define SIMDE_ARCH_X86 3
182
+ #elif defined(_X86_) || defined(__X86__) || defined(__THW_INTEL__)
183
+ # define SIMDE_ARCH_X86 3
184
+ #endif
185
+
186
+ /* SIMD ISA extensions for x86/x86_64 */
187
+ #if defined(SIMDE_ARCH_X86) || defined(SIMDE_ARCH_AMD64)
188
+ # if defined(_M_IX86_FP)
189
+ # define SIMDE_ARCH_X86_MMX
190
+ # if (_M_IX86_FP >= 1)
191
+ # define SIMDE_ARCH_X86_SSE 1
192
+ # endif
193
+ # if (_M_IX86_FP >= 2)
194
+ # define SIMDE_ARCH_X86_SSE2 1
195
+ # endif
196
+ # elif defined(_M_X64)
197
+ # define SIMDE_ARCH_X86_SSE 1
198
+ # define SIMDE_ARCH_X86_SSE2 1
199
+ # else
200
+ # if defined(__MMX__)
201
+ # define SIMDE_ARCH_X86_MMX 1
202
+ # endif
203
+ # if defined(__SSE__)
204
+ # define SIMDE_ARCH_X86_SSE 1
205
+ # endif
206
+ # if defined(__SSE2__)
207
+ # define SIMDE_ARCH_X86_SSE2 1
208
+ # endif
209
+ # endif
210
+ # if defined(__SSE3__)
211
+ # define SIMDE_ARCH_X86_SSE3 1
212
+ # endif
213
+ # if defined(__SSSE3__)
214
+ # define SIMDE_ARCH_X86_SSSE3 1
215
+ # endif
216
+ # if defined(__SSE4_1__)
217
+ # define SIMDE_ARCH_X86_SSE4_1 1
218
+ # endif
219
+ # if defined(__SSE4_2__)
220
+ # define SIMDE_ARCH_X86_SSE4_2 1
221
+ # endif
222
+ # if defined(__AVX__)
223
+ # define SIMDE_ARCH_X86_AVX 1
224
+ # if !defined(SIMDE_ARCH_X86_SSE3)
225
+ # define SIMDE_ARCH_X86_SSE3 1
226
+ # endif
227
+ # if !defined(SIMDE_ARCH_X86_SSE4_1)
228
+ # define SIMDE_ARCH_X86_SSE4_1 1
229
+ # endif
230
+ # if !defined(SIMDE_ARCH_X86_SSE4_1)
231
+ # define SIMDE_ARCH_X86_SSE4_2 1
232
+ # endif
233
+ # endif
234
+ # if defined(__AVX2__)
235
+ # define SIMDE_ARCH_X86_AVX2 1
236
+ # endif
237
+ # if defined(__FMA__)
238
+ # define SIMDE_ARCH_X86_FMA 1
239
+ # if !defined(SIMDE_ARCH_X86_AVX)
240
+ # define SIMDE_ARCH_X86_AVX 1
241
+ # endif
242
+ # endif
243
+ # if defined(__AVX512BW__)
244
+ # define SIMDE_ARCH_X86_AVX512BW 1
245
+ # endif
246
+ # if defined(__AVX512CD__)
247
+ # define SIMDE_ARCH_X86_AVX512CD 1
248
+ # endif
249
+ # if defined(__AVX512DQ__)
250
+ # define SIMDE_ARCH_X86_AVX512DQ 1
251
+ # endif
252
+ # if defined(__AVX512F__)
253
+ # define SIMDE_ARCH_X86_AVX512F 1
254
+ # endif
255
+ # if defined(__AVX512VL__)
256
+ # define SIMDE_ARCH_X86_AVX512VL 1
257
+ # endif
258
+ #endif
259
+
260
+ /* Itanium
261
+ <https://en.wikipedia.org/wiki/Itanium> */
262
+ #if defined(__ia64__) || defined(_IA64) || defined(__IA64__) || defined(__ia64) || defined(_M_IA64) || defined(__itanium__)
263
+ # define SIMDE_ARCH_IA64 1
264
+ #endif
265
+
266
+ /* Renesas M32R
267
+ <https://en.wikipedia.org/wiki/M32R> */
268
+ #if defined(__m32r__) || defined(__M32R__)
269
+ # define SIMDE_ARCH_M32R
270
+ #endif
271
+
272
+ /* Motorola 68000
273
+ <https://en.wikipedia.org/wiki/Motorola_68000> */
274
+ #if defined(__mc68060__) || defined(__MC68060__)
275
+ # define SIMDE_ARCH_M68K 68060
276
+ #elif defined(__mc68040__) || defined(__MC68040__)
277
+ # define SIMDE_ARCH_M68K 68040
278
+ #elif defined(__mc68030__) || defined(__MC68030__)
279
+ # define SIMDE_ARCH_M68K 68030
280
+ #elif defined(__mc68020__) || defined(__MC68020__)
281
+ # define SIMDE_ARCH_M68K 68020
282
+ #elif defined(__mc68010__) || defined(__MC68010__)
283
+ # define SIMDE_ARCH_M68K 68010
284
+ #elif defined(__mc68000__) || defined(__MC68000__)
285
+ # define SIMDE_ARCH_M68K 68000
286
+ #endif
287
+
288
+ /* Xilinx MicroBlaze
289
+ <https://en.wikipedia.org/wiki/MicroBlaze> */
290
+ #if defined(__MICROBLAZE__) || defined(__microblaze__)
291
+ # define SIMDE_ARCH_MICROBLAZE
292
+ #endif
293
+
294
+ /* MIPS
295
+ <https://en.wikipedia.org/wiki/MIPS_architecture> */
296
+ #if defined(_MIPS_ISA_MIPS64R2)
297
+ # define SIMDE_ARCH_MIPS 642
298
+ #elif defined(_MIPS_ISA_MIPS64)
299
+ # define SIMDE_ARCH_MIPS 640
300
+ #elif defined(_MIPS_ISA_MIPS32R2)
301
+ # define SIMDE_ARCH_MIPS 322
302
+ #elif defined(_MIPS_ISA_MIPS32)
303
+ # define SIMDE_ARCH_MIPS 320
304
+ #elif defined(_MIPS_ISA_MIPS4)
305
+ # define SIMDE_ARCH_MIPS 4
306
+ #elif defined(_MIPS_ISA_MIPS3)
307
+ # define SIMDE_ARCH_MIPS 3
308
+ #elif defined(_MIPS_ISA_MIPS2)
309
+ # define SIMDE_ARCH_MIPS 2
310
+ #elif defined(_MIPS_ISA_MIPS1)
311
+ # define SIMDE_ARCH_MIPS 1
312
+ #elif defined(_MIPS_ISA_MIPS) || defined(__mips) || defined(__MIPS__)
313
+ # define SIMDE_ARCH_MIPS 1
314
+ #endif
315
+
316
+ /* Matsushita MN10300
317
+ <https://en.wikipedia.org/wiki/MN103> */
318
+ #if defined(__MN10300__) || defined(__mn10300__)
319
+ # define SIMDE_ARCH_MN10300 1
320
+ #endif
321
+
322
+ /* POWER
323
+ <https://en.wikipedia.org/wiki/IBM_POWER_Instruction_Set_Architecture> */
324
+ #if defined(_M_PPC)
325
+ # define SIMDE_ARCH_POWER _M_PPC
326
+ #elif defined(_ARCH_PWR9)
327
+ # define SIMDE_ARCH_POWER 900
328
+ #elif defined(_ARCH_PWR8)
329
+ # define SIMDE_ARCH_POWER 800
330
+ #elif defined(_ARCH_PWR7)
331
+ # define SIMDE_ARCH_POWER 700
332
+ #elif defined(_ARCH_PWR6)
333
+ # define SIMDE_ARCH_POWER 600
334
+ #elif defined(_ARCH_PWR5)
335
+ # define SIMDE_ARCH_POWER 500
336
+ #elif defined(_ARCH_PWR4)
337
+ # define SIMDE_ARCH_POWER 400
338
+ #elif defined(_ARCH_440) || defined(__ppc440__)
339
+ # define SIMDE_ARCH_POWER 440
340
+ #elif defined(_ARCH_450) || defined(__ppc450__)
341
+ # define SIMDE_ARCH_POWER 450
342
+ #elif defined(_ARCH_601) || defined(__ppc601__)
343
+ # define SIMDE_ARCH_POWER 601
344
+ #elif defined(_ARCH_603) || defined(__ppc603__)
345
+ # define SIMDE_ARCH_POWER 603
346
+ #elif defined(_ARCH_604) || defined(__ppc604__)
347
+ # define SIMDE_ARCH_POWER 604
348
+ #elif defined(_ARCH_605) || defined(__ppc605__)
349
+ # define SIMDE_ARCH_POWER 605
350
+ #elif defined(_ARCH_620) || defined(__ppc620__)
351
+ # define SIMDE_ARCH_POWER 620
352
+ #elif defined(__powerpc) || defined(__powerpc__) || defined(__POWERPC__) || defined(__ppc__) || defined(__PPC__) || defined(_ARCH_PPC) || defined(__ppc)
353
+ # define SIMDE_ARCH_POWER 1
354
+ #endif
355
+
356
+ #if defined(__ALTIVEC__)
357
+ # define SIMDE_ARCH_POWER_ALTIVEC SIMDE_ARCH_POWER
358
+ #endif
359
+
360
+ /* SPARC
361
+ <https://en.wikipedia.org/wiki/SPARC> */
362
+ #if defined(__sparc_v9__) || defined(__sparcv9)
363
+ # define SIMDE_ARCH_SPARC 9
364
+ #elif defined(__sparc_v8__) || defined(__sparcv8)
365
+ # define SIMDE_ARCH_SPARC 8
366
+ #elif defined(__sparc_v7__) || defined(__sparcv7)
367
+ # define SIMDE_ARCH_SPARC 7
368
+ #elif defined(__sparc_v6__) || defined(__sparcv6)
369
+ # define SIMDE_ARCH_SPARC 6
370
+ #elif defined(__sparc_v5__) || defined(__sparcv5)
371
+ # define SIMDE_ARCH_SPARC 5
372
+ #elif defined(__sparc_v4__) || defined(__sparcv4)
373
+ # define SIMDE_ARCH_SPARC 4
374
+ #elif defined(__sparc_v3__) || defined(__sparcv3)
375
+ # define SIMDE_ARCH_SPARC 3
376
+ #elif defined(__sparc_v2__) || defined(__sparcv2)
377
+ # define SIMDE_ARCH_SPARC 2
378
+ #elif defined(__sparc_v1__) || defined(__sparcv1)
379
+ # define SIMDE_ARCH_SPARC 1
380
+ #elif defined(__sparc__) || defined(__sparc)
381
+ # define SIMDE_ARCH_SPARC 1
382
+ #endif
383
+
384
+ /* SuperH
385
+ <https://en.wikipedia.org/wiki/SuperH> */
386
+ #if defined(__sh5__) || defined(__SH5__)
387
+ # define SIMDE_ARCH_SUPERH 5
388
+ #elif defined(__sh4__) || defined(__SH4__)
389
+ # define SIMDE_ARCH_SUPERH 4
390
+ #elif defined(__sh3__) || defined(__SH3__)
391
+ # define SIMDE_ARCH_SUPERH 3
392
+ #elif defined(__sh2__) || defined(__SH2__)
393
+ # define SIMDE_ARCH_SUPERH 2
394
+ #elif defined(__sh1__) || defined(__SH1__)
395
+ # define SIMDE_ARCH_SUPERH 1
396
+ #elif defined(__sh__) || defined(__SH__)
397
+ # define SIMDE_ARCH_SUPERH 1
398
+ #endif
399
+
400
+ /* IBM System z
401
+ <https://en.wikipedia.org/wiki/IBM_System_z> */
402
+ #if defined(__370__) || defined(__THW_370__) || defined(__s390__) || defined(__s390x__) || defined(__zarch__) || defined(__SYSC_ZARCH__)
403
+ # define SIMDE_ARCH_SYSTEMZ
404
+ #endif
405
+
406
+ /* TMS320 DSP
407
+ <https://en.wikipedia.org/wiki/Texas_Instruments_TMS320> */
408
+ #if defined(_TMS320C6740) || defined(__TMS320C6740__)
409
+ # define SIMDE_ARCH_TMS320 6740
410
+ #elif defined(_TMS320C6700_PLUS) || defined(__TMS320C6700_PLUS__)
411
+ # define SIMDE_ARCH_TMS320 6701
412
+ #elif defined(_TMS320C6700) || defined(__TMS320C6700__)
413
+ # define SIMDE_ARCH_TMS320 6700
414
+ #elif defined(_TMS320C6600) || defined(__TMS320C6600__)
415
+ # define SIMDE_ARCH_TMS320 6600
416
+ #elif defined(_TMS320C6400_PLUS) || defined(__TMS320C6400_PLUS__)
417
+ # define SIMDE_ARCH_TMS320 6401
418
+ #elif defined(_TMS320C6400) || defined(__TMS320C6400__)
419
+ # define SIMDE_ARCH_TMS320 6400
420
+ #elif defined(_TMS320C6200) || defined(__TMS320C6200__)
421
+ # define SIMDE_ARCH_TMS320 6200
422
+ #elif defined(_TMS320C55X) || defined(__TMS320C55X__)
423
+ # define SIMDE_ARCH_TMS320 550
424
+ #elif defined(_TMS320C54X) || defined(__TMS320C54X__)
425
+ # define SIMDE_ARCH_TMS320 540
426
+ #elif defined(_TMS320C28X) || defined(__TMS320C28X__)
427
+ # define SIMDE_ARCH_TMS320 280
428
+ #endif
429
+
430
+ /* WebAssembly */
431
+ #if defined(__wasm__)
432
+ # define SIMDE_ARCH_WASM 1
433
+ #endif
434
+
435
+ #if defined(SIMDE_ARCH_WASM) && defined(__wasm_simd128__)
436
+ # define SIMDE_ARCH_WASM_SIMD128
437
+ #endif
438
+
439
+ /* Xtensa
440
+ <https://en.wikipedia.org/wiki/> */
441
+ #if defined(__xtensa__) || defined(__XTENSA__)
442
+ # define SIMDE_ARCH_XTENSA 1
443
+ #endif
444
+
445
+ #endif /* !defined(SIMDE_ARCH_H) */