minimap2 0.2.24.3 → 0.2.24.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/ext/minimap2/lib/simde/CONTRIBUTING.md +114 -0
  3. data/ext/minimap2/lib/simde/COPYING +20 -0
  4. data/ext/minimap2/lib/simde/README.md +333 -0
  5. data/ext/minimap2/lib/simde/amalgamate.py +58 -0
  6. data/ext/minimap2/lib/simde/meson.build +33 -0
  7. data/ext/minimap2/lib/simde/netlify.toml +20 -0
  8. data/ext/minimap2/lib/simde/simde/arm/neon/float32x2.h +140 -0
  9. data/ext/minimap2/lib/simde/simde/arm/neon/float32x4.h +137 -0
  10. data/ext/minimap2/lib/simde/simde/arm/neon/float64x1.h +142 -0
  11. data/ext/minimap2/lib/simde/simde/arm/neon/float64x2.h +145 -0
  12. data/ext/minimap2/lib/simde/simde/arm/neon/int16x4.h +140 -0
  13. data/ext/minimap2/lib/simde/simde/arm/neon/int16x8.h +145 -0
  14. data/ext/minimap2/lib/simde/simde/arm/neon/int32x2.h +140 -0
  15. data/ext/minimap2/lib/simde/simde/arm/neon/int32x4.h +143 -0
  16. data/ext/minimap2/lib/simde/simde/arm/neon/int64x1.h +137 -0
  17. data/ext/minimap2/lib/simde/simde/arm/neon/int64x2.h +141 -0
  18. data/ext/minimap2/lib/simde/simde/arm/neon/int8x16.h +147 -0
  19. data/ext/minimap2/lib/simde/simde/arm/neon/int8x8.h +141 -0
  20. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x4.h +134 -0
  21. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x8.h +138 -0
  22. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x2.h +134 -0
  23. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x4.h +137 -0
  24. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x1.h +131 -0
  25. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x2.h +135 -0
  26. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x16.h +141 -0
  27. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x8.h +135 -0
  28. data/ext/minimap2/lib/simde/simde/arm/neon.h +97 -0
  29. data/ext/minimap2/lib/simde/simde/check.h +267 -0
  30. data/ext/minimap2/lib/simde/simde/debug-trap.h +83 -0
  31. data/ext/minimap2/lib/simde/simde/hedley.h +1899 -0
  32. data/ext/minimap2/lib/simde/simde/simde-arch.h +445 -0
  33. data/ext/minimap2/lib/simde/simde/simde-common.h +697 -0
  34. data/ext/minimap2/lib/simde/simde/x86/avx.h +5385 -0
  35. data/ext/minimap2/lib/simde/simde/x86/avx2.h +2402 -0
  36. data/ext/minimap2/lib/simde/simde/x86/avx512bw.h +391 -0
  37. data/ext/minimap2/lib/simde/simde/x86/avx512f.h +3389 -0
  38. data/ext/minimap2/lib/simde/simde/x86/avx512vl.h +112 -0
  39. data/ext/minimap2/lib/simde/simde/x86/fma.h +659 -0
  40. data/ext/minimap2/lib/simde/simde/x86/mmx.h +2210 -0
  41. data/ext/minimap2/lib/simde/simde/x86/sse.h +3696 -0
  42. data/ext/minimap2/lib/simde/simde/x86/sse2.h +5991 -0
  43. data/ext/minimap2/lib/simde/simde/x86/sse3.h +343 -0
  44. data/ext/minimap2/lib/simde/simde/x86/sse4.1.h +1783 -0
  45. data/ext/minimap2/lib/simde/simde/x86/sse4.2.h +105 -0
  46. data/ext/minimap2/lib/simde/simde/x86/ssse3.h +1053 -0
  47. data/ext/minimap2/lib/simde/simde/x86/svml.h +543 -0
  48. data/ext/minimap2/lib/simde/test/CMakeLists.txt +166 -0
  49. data/ext/minimap2/lib/simde/test/arm/meson.build +4 -0
  50. data/ext/minimap2/lib/simde/test/arm/neon/meson.build +23 -0
  51. data/ext/minimap2/lib/simde/test/arm/neon/skel.c +871 -0
  52. data/ext/minimap2/lib/simde/test/arm/neon/test-neon-internal.h +134 -0
  53. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.c +39 -0
  54. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.h +10 -0
  55. data/ext/minimap2/lib/simde/test/arm/neon/vadd.c +1260 -0
  56. data/ext/minimap2/lib/simde/test/arm/neon/vdup_n.c +873 -0
  57. data/ext/minimap2/lib/simde/test/arm/neon/vmul.c +1084 -0
  58. data/ext/minimap2/lib/simde/test/arm/neon/vsub.c +1260 -0
  59. data/ext/minimap2/lib/simde/test/arm/test-arm-internal.h +18 -0
  60. data/ext/minimap2/lib/simde/test/arm/test-arm.c +20 -0
  61. data/ext/minimap2/lib/simde/test/arm/test-arm.h +8 -0
  62. data/ext/minimap2/lib/simde/test/cmake/AddCompilerFlags.cmake +171 -0
  63. data/ext/minimap2/lib/simde/test/cmake/ExtraWarningFlags.cmake +68 -0
  64. data/ext/minimap2/lib/simde/test/meson.build +64 -0
  65. data/ext/minimap2/lib/simde/test/munit/COPYING +21 -0
  66. data/ext/minimap2/lib/simde/test/munit/Makefile +55 -0
  67. data/ext/minimap2/lib/simde/test/munit/README.md +54 -0
  68. data/ext/minimap2/lib/simde/test/munit/example.c +351 -0
  69. data/ext/minimap2/lib/simde/test/munit/meson.build +37 -0
  70. data/ext/minimap2/lib/simde/test/munit/munit.c +2055 -0
  71. data/ext/minimap2/lib/simde/test/munit/munit.h +535 -0
  72. data/ext/minimap2/lib/simde/test/run-tests.c +20 -0
  73. data/ext/minimap2/lib/simde/test/run-tests.h +260 -0
  74. data/ext/minimap2/lib/simde/test/x86/avx.c +13752 -0
  75. data/ext/minimap2/lib/simde/test/x86/avx2.c +9977 -0
  76. data/ext/minimap2/lib/simde/test/x86/avx512bw.c +2664 -0
  77. data/ext/minimap2/lib/simde/test/x86/avx512f.c +10416 -0
  78. data/ext/minimap2/lib/simde/test/x86/avx512vl.c +210 -0
  79. data/ext/minimap2/lib/simde/test/x86/fma.c +2557 -0
  80. data/ext/minimap2/lib/simde/test/x86/meson.build +33 -0
  81. data/ext/minimap2/lib/simde/test/x86/mmx.c +2878 -0
  82. data/ext/minimap2/lib/simde/test/x86/skel.c +2984 -0
  83. data/ext/minimap2/lib/simde/test/x86/sse.c +5121 -0
  84. data/ext/minimap2/lib/simde/test/x86/sse2.c +9860 -0
  85. data/ext/minimap2/lib/simde/test/x86/sse3.c +486 -0
  86. data/ext/minimap2/lib/simde/test/x86/sse4.1.c +3446 -0
  87. data/ext/minimap2/lib/simde/test/x86/sse4.2.c +101 -0
  88. data/ext/minimap2/lib/simde/test/x86/ssse3.c +2084 -0
  89. data/ext/minimap2/lib/simde/test/x86/svml.c +1545 -0
  90. data/ext/minimap2/lib/simde/test/x86/test-avx.h +16 -0
  91. data/ext/minimap2/lib/simde/test/x86/test-avx512.h +25 -0
  92. data/ext/minimap2/lib/simde/test/x86/test-mmx.h +13 -0
  93. data/ext/minimap2/lib/simde/test/x86/test-sse.h +13 -0
  94. data/ext/minimap2/lib/simde/test/x86/test-sse2.h +13 -0
  95. data/ext/minimap2/lib/simde/test/x86/test-x86-internal.h +196 -0
  96. data/ext/minimap2/lib/simde/test/x86/test-x86.c +48 -0
  97. data/ext/minimap2/lib/simde/test/x86/test-x86.h +8 -0
  98. data/lib/minimap2/aligner.rb +2 -2
  99. data/lib/minimap2/ffi/constants.rb +3 -0
  100. data/lib/minimap2/version.rb +1 -1
  101. metadata +99 -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