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,137 @@
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
+ #if !defined(SIMDE__INSIDE_NEON_H)
25
+ # error Do not include simde/arm/neon/uint32x4.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_UINT32X4_H)
29
+ #define SIMDE__NEON_UINT32X4_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ uint32_t u32 SIMDE_VECTOR(16) SIMDE_MAY_ALIAS;
34
+ #else
35
+ uint32_t u32[4];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ uint32x4_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx[2];
44
+ #endif
45
+ #if defined(SIMDE_NEON_SSE2)
46
+ __m128i sse;
47
+ #endif
48
+ } simde_uint32x4_t;
49
+
50
+ #if defined(SIMDE_NEON_NATIVE)
51
+ HEDLEY_STATIC_ASSERT(sizeof(uint32x4_t) == sizeof(simde_uint32x4_t), "uint32x4_t size doesn't match simde_uint32x4_t size");
52
+ #endif
53
+ HEDLEY_STATIC_ASSERT(16 == sizeof(simde_uint32x4_t), "simde_uint32x4_t size incorrect");
54
+
55
+ SIMDE__FUNCTION_ATTRIBUTES
56
+ simde_uint32x4_t
57
+ simde_vaddq_u32(simde_uint32x4_t a, simde_uint32x4_t b) {
58
+ simde_uint32x4_t r;
59
+ #if defined(SIMDE_NEON_NATIVE)
60
+ r.n = vaddq_u32(a.n, b.n);
61
+ #else
62
+ SIMDE__VECTORIZE
63
+ for (size_t i = 0 ; i < (sizeof(r.u32) / sizeof(r.u32[0])) ; i++) {
64
+ r.u32[i] = a.u32[i] + b.u32[i];
65
+ }
66
+ #endif
67
+ return r;
68
+ }
69
+
70
+ SIMDE__FUNCTION_ATTRIBUTES
71
+ simde_uint32x4_t
72
+ simde_vld1q_u32 (uint32_t const ptr[4]) {
73
+ simde_uint32x4_t r;
74
+ #if defined(SIMDE_NEON_NATIVE)
75
+ r.n = vld1q_u32(ptr);
76
+ #else
77
+ SIMDE__VECTORIZE
78
+ for (size_t i = 0 ; i < (sizeof(r.u32) / sizeof(r.u32[0])) ; i++) {
79
+ r.u32[i] = ptr[i];
80
+ }
81
+ #endif
82
+ return r;
83
+ }
84
+
85
+ SIMDE__FUNCTION_ATTRIBUTES
86
+ simde_uint32x4_t
87
+ simde_x_vloadq_u32 (uint32_t l0, uint32_t l1, uint32_t l2, uint32_t l3) {
88
+ uint32_t v[] = { l0, l1, l2, l3 };
89
+ return simde_vld1q_u32(v);
90
+ }
91
+
92
+ SIMDE__FUNCTION_ATTRIBUTES
93
+ simde_uint32x4_t
94
+ simde_vdupq_n_u32 (uint32_t value) {
95
+ simde_uint32x4_t r;
96
+ #if defined(SIMDE_NEON_NATIVE)
97
+ r.n = vdupq_n_u32(value);
98
+ #else
99
+ SIMDE__VECTORIZE
100
+ for (size_t i = 0 ; i < (sizeof(r.u32) / sizeof(r.u32[0])) ; i++) {
101
+ r.u32[i] = value;
102
+ }
103
+ #endif
104
+ return r;
105
+ }
106
+
107
+ SIMDE__FUNCTION_ATTRIBUTES
108
+ simde_uint32x4_t
109
+ simde_vmulq_u32(simde_uint32x4_t a, simde_uint32x4_t b) {
110
+ simde_uint32x4_t r;
111
+ #if defined(SIMDE_NEON_NATIVE)
112
+ r.n = vmulq_u32(a.n, b.n);
113
+ #else
114
+ SIMDE__VECTORIZE
115
+ for (size_t i = 0 ; i < (sizeof(r.u32) / sizeof(r.u32[0])) ; i++) {
116
+ r.u32[i] = a.u32[i] * b.u32[i];
117
+ }
118
+ #endif
119
+ return r;
120
+ }
121
+
122
+ SIMDE__FUNCTION_ATTRIBUTES
123
+ simde_uint32x4_t
124
+ simde_vsubq_u32(simde_uint32x4_t a, simde_uint32x4_t b) {
125
+ simde_uint32x4_t r;
126
+ #if defined(SIMDE_NEON_NATIVE)
127
+ r.n = vsubq_u32(a.n, b.n);
128
+ #else
129
+ SIMDE__VECTORIZE
130
+ for (size_t i = 0 ; i < (sizeof(r.u32) / sizeof(r.u32[0])) ; i++) {
131
+ r.u32[i] = a.u32[i] - b.u32[i];
132
+ }
133
+ #endif
134
+ return r;
135
+ }
136
+
137
+ #endif
@@ -0,0 +1,131 @@
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
+ #if !defined(SIMDE__INSIDE_NEON_H)
25
+ # error Do not include simde/arm/neon/uint64x1.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_UINT64X1_H)
29
+ #define SIMDE__NEON_UINT64X1_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ uint64_t u64 SIMDE_VECTOR(8) SIMDE_MAY_ALIAS;
34
+ #else
35
+ uint64_t u64[1];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ uint64x1_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx;
44
+ #endif
45
+ } simde_uint64x1_t;
46
+
47
+ #if defined(SIMDE_NEON_NATIVE)
48
+ HEDLEY_STATIC_ASSERT(sizeof(uint64x1_t) == sizeof(simde_uint64x1_t), "uint64x1_t size doesn't match simde_uint64x1_t size");
49
+ #endif
50
+ HEDLEY_STATIC_ASSERT(8 == sizeof(simde_uint64x1_t), "simde_uint64x1_t size incorrect");
51
+
52
+ SIMDE__FUNCTION_ATTRIBUTES
53
+ simde_uint64x1_t
54
+ simde_vadd_u64(simde_uint64x1_t a, simde_uint64x1_t b) {
55
+ simde_uint64x1_t r;
56
+ #if defined(SIMDE_NEON_NATIVE)
57
+ r.n = vadd_u64(a.n, b.n);
58
+ #else
59
+ SIMDE__VECTORIZE
60
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
61
+ r.u64[i] = a.u64[i] + b.u64[i];
62
+ }
63
+ #endif
64
+ return r;
65
+ }
66
+
67
+ SIMDE__FUNCTION_ATTRIBUTES
68
+ simde_uint64x1_t
69
+ simde_vld1_u64 (uint64_t const ptr[1]) {
70
+ simde_uint64x1_t r;
71
+ #if defined(SIMDE_NEON_NATIVE)
72
+ r.n = vld1_u64(ptr);
73
+ #else
74
+ SIMDE__VECTORIZE
75
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
76
+ r.u64[i] = ptr[i];
77
+ }
78
+ #endif
79
+ return r;
80
+ }
81
+
82
+ SIMDE__FUNCTION_ATTRIBUTES
83
+ simde_uint64x1_t
84
+ simde_x_vload_u64 (uint64_t l0) {
85
+ return simde_vld1_u64(&l0);
86
+ }
87
+
88
+ SIMDE__FUNCTION_ATTRIBUTES
89
+ simde_uint64x1_t
90
+ simde_vdup_n_u64 (uint64_t value) {
91
+ simde_uint64x1_t r;
92
+ #if defined(SIMDE_NEON_NATIVE)
93
+ r.n = vdup_n_u64(value);
94
+ #else
95
+ SIMDE__VECTORIZE
96
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
97
+ r.u64[i] = value;
98
+ }
99
+ #endif
100
+ return r;
101
+ }
102
+
103
+ SIMDE__FUNCTION_ATTRIBUTES
104
+ simde_uint64x1_t
105
+ simde_x_vmul_u64(simde_uint64x1_t a, simde_uint64x1_t b) {
106
+ simde_uint64x1_t r;
107
+
108
+ SIMDE__VECTORIZE
109
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
110
+ r.u64[i] = a.u64[i] * b.u64[i];
111
+ }
112
+
113
+ return r;
114
+ }
115
+
116
+ SIMDE__FUNCTION_ATTRIBUTES
117
+ simde_uint64x1_t
118
+ simde_vsub_u64(simde_uint64x1_t a, simde_uint64x1_t b) {
119
+ simde_uint64x1_t r;
120
+ #if defined(SIMDE_NEON_NATIVE)
121
+ r.n = vsub_u64(a.n, b.n);
122
+ #else
123
+ SIMDE__VECTORIZE
124
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
125
+ r.u64[i] = a.u64[i] - b.u64[i];
126
+ }
127
+ #endif
128
+ return r;
129
+ }
130
+
131
+ #endif
@@ -0,0 +1,135 @@
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
+ #if !defined(SIMDE__INSIDE_NEON_H)
25
+ # error Do not include simde/arm/neon/uint64x2.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_UINT64X2_H)
29
+ #define SIMDE__NEON_UINT64X2_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ uint64_t u64 SIMDE_VECTOR(16) SIMDE_MAY_ALIAS;
34
+ #else
35
+ uint64_t u64[2];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ uint64x2_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx[2];
44
+ #endif
45
+ #if defined(SIMDE_NEON_SSE2)
46
+ __m128i sse;
47
+ #endif
48
+ } simde_uint64x2_t;
49
+
50
+ #if defined(SIMDE_NEON_NATIVE)
51
+ HEDLEY_STATIC_ASSERT(sizeof(uint64x2_t) == sizeof(simde_uint64x2_t), "uint64x2_t size doesn't match simde_uint64x2_t size");
52
+ #endif
53
+ HEDLEY_STATIC_ASSERT(16 == sizeof(simde_uint64x2_t), "simde_uint64x2_t size incorrect");
54
+
55
+ SIMDE__FUNCTION_ATTRIBUTES
56
+ simde_uint64x2_t
57
+ simde_vaddq_u64(simde_uint64x2_t a, simde_uint64x2_t b) {
58
+ simde_uint64x2_t r;
59
+ #if defined(SIMDE_NEON_NATIVE)
60
+ r.n = vaddq_u64(a.n, b.n);
61
+ #else
62
+ SIMDE__VECTORIZE
63
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
64
+ r.u64[i] = a.u64[i] + b.u64[i];
65
+ }
66
+ #endif
67
+ return r;
68
+ }
69
+
70
+ SIMDE__FUNCTION_ATTRIBUTES
71
+ simde_uint64x2_t
72
+ simde_vld1q_u64 (uint64_t const ptr[2]) {
73
+ simde_uint64x2_t r;
74
+ #if defined(SIMDE_NEON_NATIVE)
75
+ r.n = vld1q_u64(ptr);
76
+ #else
77
+ SIMDE__VECTORIZE
78
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
79
+ r.u64[i] = ptr[i];
80
+ }
81
+ #endif
82
+ return r;
83
+ }
84
+
85
+ SIMDE__FUNCTION_ATTRIBUTES
86
+ simde_uint64x2_t
87
+ simde_x_vloadq_u64 (uint64_t l0, uint64_t l1) {
88
+ uint64_t v[] = { l0, l1 };
89
+ return simde_vld1q_u64(v);
90
+ }
91
+
92
+ SIMDE__FUNCTION_ATTRIBUTES
93
+ simde_uint64x2_t
94
+ simde_vdupq_n_u64 (uint64_t value) {
95
+ simde_uint64x2_t r;
96
+ #if defined(SIMDE_NEON_NATIVE)
97
+ r.n = vdupq_n_u64(value);
98
+ #else
99
+ SIMDE__VECTORIZE
100
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
101
+ r.u64[i] = value;
102
+ }
103
+ #endif
104
+ return r;
105
+ }
106
+
107
+ SIMDE__FUNCTION_ATTRIBUTES
108
+ simde_uint64x2_t
109
+ simde_x_vmulq_u64(simde_uint64x2_t a, simde_uint64x2_t b) {
110
+ simde_uint64x2_t r;
111
+
112
+ SIMDE__VECTORIZE
113
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
114
+ r.u64[i] = a.u64[i] * b.u64[i];
115
+ }
116
+
117
+ return r;
118
+ }
119
+
120
+ SIMDE__FUNCTION_ATTRIBUTES
121
+ simde_uint64x2_t
122
+ simde_vsubq_u64(simde_uint64x2_t a, simde_uint64x2_t b) {
123
+ simde_uint64x2_t r;
124
+ #if defined(SIMDE_NEON_NATIVE)
125
+ r.n = vsubq_u64(a.n, b.n);
126
+ #else
127
+ SIMDE__VECTORIZE
128
+ for (size_t i = 0 ; i < (sizeof(r.u64) / sizeof(r.u64[0])) ; i++) {
129
+ r.u64[i] = a.u64[i] - b.u64[i];
130
+ }
131
+ #endif
132
+ return r;
133
+ }
134
+
135
+ #endif
@@ -0,0 +1,141 @@
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
+ #if !defined(SIMDE__INSIDE_NEON_H)
25
+ # error Do not include simde/arm/neon/uint8x16.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_UINT8X16_H)
29
+ #define SIMDE__NEON_UINT8X16_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ uint8_t u8 SIMDE_VECTOR(16) SIMDE_MAY_ALIAS;
34
+ #else
35
+ uint8_t u8[16];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ uint8x16_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx[2];
44
+ #endif
45
+ #if defined(SIMDE_NEON_SSE2)
46
+ __m128i sse;
47
+ #endif
48
+ } simde_uint8x16_t;
49
+
50
+ #if defined(SIMDE_NEON_NATIVE)
51
+ HEDLEY_STATIC_ASSERT(sizeof(uint8x16_t) == sizeof(simde_uint8x16_t), "uint8x16_t size doesn't match simde_uint8x16_t size");
52
+ #endif
53
+ HEDLEY_STATIC_ASSERT(16 == sizeof(simde_uint8x16_t), "simde_uint8x16_t size incorrect");
54
+
55
+ SIMDE__FUNCTION_ATTRIBUTES
56
+ simde_uint8x16_t
57
+ simde_vaddq_u8(simde_uint8x16_t a, simde_uint8x16_t b) {
58
+ simde_uint8x16_t r;
59
+ #if defined(SIMDE_NEON_NATIVE)
60
+ r.n = vaddq_u8(a.n, b.n);
61
+ #else
62
+ SIMDE__VECTORIZE
63
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
64
+ r.u8[i] = a.u8[i] + b.u8[i];
65
+ }
66
+ #endif
67
+ return r;
68
+ }
69
+
70
+ SIMDE__FUNCTION_ATTRIBUTES
71
+ simde_uint8x16_t
72
+ simde_vld1q_u8 (uint8_t const ptr[8]) {
73
+ simde_uint8x16_t r;
74
+ #if defined(SIMDE_NEON_NATIVE)
75
+ r.n = vld1q_u8(ptr);
76
+ #else
77
+ SIMDE__VECTORIZE
78
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
79
+ r.u8[i] = ptr[i];
80
+ }
81
+ #endif
82
+ return r;
83
+ }
84
+
85
+ SIMDE__FUNCTION_ATTRIBUTES
86
+ simde_uint8x16_t
87
+ simde_x_vloadq_u8 (uint8_t l0, uint8_t l1, uint8_t l2, uint8_t l3,
88
+ uint8_t l4, uint8_t l5, uint8_t l6, uint8_t l7,
89
+ uint8_t l8, uint8_t l9, uint8_t l10, uint8_t l11,
90
+ uint8_t l12, uint8_t l13, uint8_t l14, uint8_t l15) {
91
+ uint8_t v[] = { l0, l1, l2, l3, l4, l5, l6, l7,
92
+ l8, l9, l10, l11, l12, l13, l14, l15};
93
+ return simde_vld1q_u8(v);
94
+ }
95
+
96
+ SIMDE__FUNCTION_ATTRIBUTES
97
+ simde_uint8x16_t
98
+ simde_vdupq_n_u8 (uint8_t value) {
99
+ simde_uint8x16_t r;
100
+ #if defined(SIMDE_NEON_NATIVE)
101
+ r.n = vdupq_n_u8(value);
102
+ #else
103
+ SIMDE__VECTORIZE
104
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
105
+ r.u8[i] = value;
106
+ }
107
+ #endif
108
+ return r;
109
+ }
110
+
111
+ SIMDE__FUNCTION_ATTRIBUTES
112
+ simde_uint8x16_t
113
+ simde_vmulq_u8(simde_uint8x16_t a, simde_uint8x16_t b) {
114
+ simde_uint8x16_t r;
115
+ #if defined(SIMDE_NEON_NATIVE)
116
+ r.n = vmulq_u8(a.n, b.n);
117
+ #else
118
+ SIMDE__VECTORIZE
119
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
120
+ r.u8[i] = a.u8[i] * b.u8[i];
121
+ }
122
+ #endif
123
+ return r;
124
+ }
125
+
126
+ SIMDE__FUNCTION_ATTRIBUTES
127
+ simde_uint8x16_t
128
+ simde_vsubq_u8(simde_uint8x16_t a, simde_uint8x16_t b) {
129
+ simde_uint8x16_t r;
130
+ #if defined(SIMDE_NEON_NATIVE)
131
+ r.n = vsubq_u8(a.n, b.n);
132
+ #else
133
+ SIMDE__VECTORIZE
134
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
135
+ r.u8[i] = a.u8[i] - b.u8[i];
136
+ }
137
+ #endif
138
+ return r;
139
+ }
140
+
141
+ #endif
@@ -0,0 +1,135 @@
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
+ #if !defined(SIMDE__INSIDE_NEON_H)
25
+ # error Do not include simde/arm/neon/uint8x8.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_UINT8X8_H)
29
+ #define SIMDE__NEON_UINT8X8_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ uint8_t u8 SIMDE_VECTOR(8) SIMDE_MAY_ALIAS;
34
+ #else
35
+ uint8_t u8[8];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ uint8x8_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx;
44
+ #endif
45
+ } simde_uint8x8_t;
46
+
47
+ #if defined(SIMDE_NEON_NATIVE)
48
+ HEDLEY_STATIC_ASSERT(sizeof(uint8x8_t) == sizeof(simde_uint8x8_t), "uint8x8_t size doesn't match simde_uint8x8_t size");
49
+ #endif
50
+ HEDLEY_STATIC_ASSERT(8 == sizeof(simde_uint8x8_t), "simde_uint8x8_t size incorrect");
51
+
52
+ SIMDE__FUNCTION_ATTRIBUTES
53
+ simde_uint8x8_t
54
+ simde_vadd_u8(simde_uint8x8_t a, simde_uint8x8_t b) {
55
+ simde_uint8x8_t r;
56
+ #if defined(SIMDE_NEON_NATIVE)
57
+ r.n = vadd_u8(a.n, b.n);
58
+ #else
59
+ SIMDE__VECTORIZE
60
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
61
+ r.u8[i] = a.u8[i] + b.u8[i];
62
+ }
63
+ #endif
64
+ return r;
65
+ }
66
+
67
+ SIMDE__FUNCTION_ATTRIBUTES
68
+ simde_uint8x8_t
69
+ simde_vld1_u8 (uint8_t const ptr[8]) {
70
+ simde_uint8x8_t r;
71
+ #if defined(SIMDE_NEON_NATIVE)
72
+ r.n = vld1_u8(ptr);
73
+ #else
74
+ SIMDE__VECTORIZE
75
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
76
+ r.u8[i] = ptr[i];
77
+ }
78
+ #endif
79
+ return r;
80
+ }
81
+
82
+ SIMDE__FUNCTION_ATTRIBUTES
83
+ simde_uint8x8_t
84
+ simde_x_vload_u8 (uint8_t l0, uint8_t l1, uint8_t l2, uint8_t l3,
85
+ uint8_t l4, uint8_t l5, uint8_t l6, uint8_t l7) {
86
+ uint8_t v[] = { l0, l1, l2, l3, l4, l5, l6, l7 };
87
+ return simde_vld1_u8(v);
88
+ }
89
+
90
+ SIMDE__FUNCTION_ATTRIBUTES
91
+ simde_uint8x8_t
92
+ simde_vdup_n_u8 (uint8_t value) {
93
+ simde_uint8x8_t r;
94
+ #if defined(SIMDE_NEON_NATIVE)
95
+ r.n = vdup_n_u8(value);
96
+ #else
97
+ SIMDE__VECTORIZE
98
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
99
+ r.u8[i] = value;
100
+ }
101
+ #endif
102
+ return r;
103
+ }
104
+
105
+ SIMDE__FUNCTION_ATTRIBUTES
106
+ simde_uint8x8_t
107
+ simde_vmul_u8(simde_uint8x8_t a, simde_uint8x8_t b) {
108
+ simde_uint8x8_t r;
109
+ #if defined(SIMDE_NEON_NATIVE)
110
+ r.n = vmul_u8(a.n, b.n);
111
+ #else
112
+ SIMDE__VECTORIZE
113
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
114
+ r.u8[i] = a.u8[i] * b.u8[i];
115
+ }
116
+ #endif
117
+ return r;
118
+ }
119
+
120
+ SIMDE__FUNCTION_ATTRIBUTES
121
+ simde_uint8x8_t
122
+ simde_vsub_u8(simde_uint8x8_t a, simde_uint8x8_t b) {
123
+ simde_uint8x8_t r;
124
+ #if defined(SIMDE_NEON_NATIVE)
125
+ r.n = vsub_u8(a.n, b.n);
126
+ #else
127
+ SIMDE__VECTORIZE
128
+ for (size_t i = 0 ; i < (sizeof(r.u8) / sizeof(r.u8[0])) ; i++) {
129
+ r.u8[i] = a.u8[i] - b.u8[i];
130
+ }
131
+ #endif
132
+ return r;
133
+ }
134
+
135
+ #endif