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.
- checksums.yaml +4 -4
- data/README.md +2 -3
- data/ext/minimap2/Makefile +6 -2
- data/ext/minimap2/NEWS.md +38 -0
- data/ext/minimap2/README.md +9 -3
- data/ext/minimap2/align.c +5 -3
- data/ext/minimap2/cookbook.md +2 -2
- data/ext/minimap2/format.c +7 -4
- data/ext/minimap2/kalloc.c +20 -1
- data/ext/minimap2/kalloc.h +13 -2
- data/ext/minimap2/ksw2.h +1 -0
- data/ext/minimap2/ksw2_extd2_sse.c +1 -1
- data/ext/minimap2/ksw2_exts2_sse.c +79 -40
- data/ext/minimap2/ksw2_extz2_sse.c +1 -1
- data/ext/minimap2/lchain.c +15 -16
- data/ext/minimap2/lib/simde/CONTRIBUTING.md +114 -0
- data/ext/minimap2/lib/simde/COPYING +20 -0
- data/ext/minimap2/lib/simde/README.md +333 -0
- data/ext/minimap2/lib/simde/amalgamate.py +58 -0
- data/ext/minimap2/lib/simde/meson.build +33 -0
- data/ext/minimap2/lib/simde/netlify.toml +20 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/float32x2.h +140 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/float32x4.h +137 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/float64x1.h +142 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/float64x2.h +145 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int16x4.h +140 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int16x8.h +145 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int32x2.h +140 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int32x4.h +143 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int64x1.h +137 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int64x2.h +141 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int8x16.h +147 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/int8x8.h +141 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint16x4.h +134 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint16x8.h +138 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint32x2.h +134 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint32x4.h +137 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint64x1.h +131 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint64x2.h +135 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint8x16.h +141 -0
- data/ext/minimap2/lib/simde/simde/arm/neon/uint8x8.h +135 -0
- data/ext/minimap2/lib/simde/simde/arm/neon.h +97 -0
- data/ext/minimap2/lib/simde/simde/check.h +267 -0
- data/ext/minimap2/lib/simde/simde/debug-trap.h +83 -0
- data/ext/minimap2/lib/simde/simde/hedley.h +1899 -0
- data/ext/minimap2/lib/simde/simde/simde-arch.h +445 -0
- data/ext/minimap2/lib/simde/simde/simde-common.h +697 -0
- data/ext/minimap2/lib/simde/simde/x86/avx.h +5385 -0
- data/ext/minimap2/lib/simde/simde/x86/avx2.h +2402 -0
- data/ext/minimap2/lib/simde/simde/x86/avx512bw.h +391 -0
- data/ext/minimap2/lib/simde/simde/x86/avx512f.h +3389 -0
- data/ext/minimap2/lib/simde/simde/x86/avx512vl.h +112 -0
- data/ext/minimap2/lib/simde/simde/x86/fma.h +659 -0
- data/ext/minimap2/lib/simde/simde/x86/mmx.h +2210 -0
- data/ext/minimap2/lib/simde/simde/x86/sse.h +3696 -0
- data/ext/minimap2/lib/simde/simde/x86/sse2.h +5991 -0
- data/ext/minimap2/lib/simde/simde/x86/sse3.h +343 -0
- data/ext/minimap2/lib/simde/simde/x86/sse4.1.h +1783 -0
- data/ext/minimap2/lib/simde/simde/x86/sse4.2.h +105 -0
- data/ext/minimap2/lib/simde/simde/x86/ssse3.h +1053 -0
- data/ext/minimap2/lib/simde/simde/x86/svml.h +543 -0
- data/ext/minimap2/lib/simde/test/CMakeLists.txt +166 -0
- data/ext/minimap2/lib/simde/test/arm/meson.build +4 -0
- data/ext/minimap2/lib/simde/test/arm/neon/meson.build +23 -0
- data/ext/minimap2/lib/simde/test/arm/neon/skel.c +871 -0
- data/ext/minimap2/lib/simde/test/arm/neon/test-neon-internal.h +134 -0
- data/ext/minimap2/lib/simde/test/arm/neon/test-neon.c +39 -0
- data/ext/minimap2/lib/simde/test/arm/neon/test-neon.h +10 -0
- data/ext/minimap2/lib/simde/test/arm/neon/vadd.c +1260 -0
- data/ext/minimap2/lib/simde/test/arm/neon/vdup_n.c +873 -0
- data/ext/minimap2/lib/simde/test/arm/neon/vmul.c +1084 -0
- data/ext/minimap2/lib/simde/test/arm/neon/vsub.c +1260 -0
- data/ext/minimap2/lib/simde/test/arm/test-arm-internal.h +18 -0
- data/ext/minimap2/lib/simde/test/arm/test-arm.c +20 -0
- data/ext/minimap2/lib/simde/test/arm/test-arm.h +8 -0
- data/ext/minimap2/lib/simde/test/cmake/AddCompilerFlags.cmake +171 -0
- data/ext/minimap2/lib/simde/test/cmake/ExtraWarningFlags.cmake +68 -0
- data/ext/minimap2/lib/simde/test/meson.build +64 -0
- data/ext/minimap2/lib/simde/test/munit/COPYING +21 -0
- data/ext/minimap2/lib/simde/test/munit/Makefile +55 -0
- data/ext/minimap2/lib/simde/test/munit/README.md +54 -0
- data/ext/minimap2/lib/simde/test/munit/example.c +351 -0
- data/ext/minimap2/lib/simde/test/munit/meson.build +37 -0
- data/ext/minimap2/lib/simde/test/munit/munit.c +2055 -0
- data/ext/minimap2/lib/simde/test/munit/munit.h +535 -0
- data/ext/minimap2/lib/simde/test/run-tests.c +20 -0
- data/ext/minimap2/lib/simde/test/run-tests.h +260 -0
- data/ext/minimap2/lib/simde/test/x86/avx.c +13752 -0
- data/ext/minimap2/lib/simde/test/x86/avx2.c +9977 -0
- data/ext/minimap2/lib/simde/test/x86/avx512bw.c +2664 -0
- data/ext/minimap2/lib/simde/test/x86/avx512f.c +10416 -0
- data/ext/minimap2/lib/simde/test/x86/avx512vl.c +210 -0
- data/ext/minimap2/lib/simde/test/x86/fma.c +2557 -0
- data/ext/minimap2/lib/simde/test/x86/meson.build +33 -0
- data/ext/minimap2/lib/simde/test/x86/mmx.c +2878 -0
- data/ext/minimap2/lib/simde/test/x86/skel.c +2984 -0
- data/ext/minimap2/lib/simde/test/x86/sse.c +5121 -0
- data/ext/minimap2/lib/simde/test/x86/sse2.c +9860 -0
- data/ext/minimap2/lib/simde/test/x86/sse3.c +486 -0
- data/ext/minimap2/lib/simde/test/x86/sse4.1.c +3446 -0
- data/ext/minimap2/lib/simde/test/x86/sse4.2.c +101 -0
- data/ext/minimap2/lib/simde/test/x86/ssse3.c +2084 -0
- data/ext/minimap2/lib/simde/test/x86/svml.c +1545 -0
- data/ext/minimap2/lib/simde/test/x86/test-avx.h +16 -0
- data/ext/minimap2/lib/simde/test/x86/test-avx512.h +25 -0
- data/ext/minimap2/lib/simde/test/x86/test-mmx.h +13 -0
- data/ext/minimap2/lib/simde/test/x86/test-sse.h +13 -0
- data/ext/minimap2/lib/simde/test/x86/test-sse2.h +13 -0
- data/ext/minimap2/lib/simde/test/x86/test-x86-internal.h +196 -0
- data/ext/minimap2/lib/simde/test/x86/test-x86.c +48 -0
- data/ext/minimap2/lib/simde/test/x86/test-x86.h +8 -0
- data/ext/minimap2/main.c +13 -6
- data/ext/minimap2/map.c +0 -5
- data/ext/minimap2/minimap.h +40 -31
- data/ext/minimap2/minimap2.1 +19 -5
- data/ext/minimap2/misc/paftools.js +545 -24
- data/ext/minimap2/options.c +1 -1
- data/ext/minimap2/pyproject.toml +2 -0
- data/ext/minimap2/python/mappy.pyx +3 -1
- data/ext/minimap2/seed.c +1 -1
- data/ext/minimap2/setup.py +32 -22
- data/lib/minimap2/version.rb +1 -1
- 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
|