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,140 @@
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/int32x2.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_FLOAT32X2_H)
29
+ #define SIMDE__NEON_FLOAT32X2_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ simde_float32 f32 SIMDE_VECTOR(8) SIMDE_MAY_ALIAS;
34
+ #else
35
+ simde_float32 f32[2];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ float32x2_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx;
44
+ #endif
45
+ } simde_float32x2_t;
46
+
47
+ #if defined(SIMDE_NEON_NATIVE)
48
+ HEDLEY_STATIC_ASSERT(sizeof(float32x2_t) == sizeof(simde_float32x2_t), "float32x2_t size doesn't match simde_float32x2_t size");
49
+ #endif
50
+ HEDLEY_STATIC_ASSERT(8 == sizeof(simde_float32x2_t), "simde_float32x2_t size incorrect");
51
+
52
+ SIMDE__FUNCTION_ATTRIBUTES
53
+ simde_float32x2_t
54
+ simde_vadd_f32(simde_float32x2_t a, simde_float32x2_t b) {
55
+ simde_float32x2_t r;
56
+ #if defined(SIMDE_NEON_NATIVE)
57
+ r.n = vadd_f32(a.n, b.n);
58
+ #elif defined(SIMDE_MMX_NATIVE)
59
+ r.mmx = _mm_add_ps(a.mmx, b.mmx);
60
+ #else
61
+ SIMDE__VECTORIZE
62
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
63
+ r.f32[i] = a.f32[i] + b.f32[i];
64
+ }
65
+ #endif
66
+ return r;
67
+ }
68
+
69
+ SIMDE__FUNCTION_ATTRIBUTES
70
+ simde_float32x2_t
71
+ simde_vld1_f32 (simde_float32 const ptr[2]) {
72
+ simde_float32x2_t r;
73
+ #if defined(SIMDE_NEON_NATIVE)
74
+ r.n = vld1_f32(ptr);
75
+ #else
76
+ SIMDE__VECTORIZE
77
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
78
+ r.f32[i] = ptr[i];
79
+ }
80
+ #endif
81
+ return r;
82
+ }
83
+
84
+ SIMDE__FUNCTION_ATTRIBUTES
85
+ simde_float32x2_t
86
+ simde_x_vload_f32 (simde_float32 l0, simde_float32 l1) {
87
+ simde_float32 v[] = { l0, l1 };
88
+ return simde_vld1_f32(v);
89
+ }
90
+
91
+ SIMDE__FUNCTION_ATTRIBUTES
92
+ simde_float32x2_t
93
+ simde_vdup_n_f32 (simde_float32 value) {
94
+ simde_float32x2_t r;
95
+ #if defined(SIMDE_NEON_NATIVE)
96
+ r.n = vdup_n_f32(value);
97
+ #else
98
+ SIMDE__VECTORIZE
99
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
100
+ r.f32[i] = value;
101
+ }
102
+ #endif
103
+ return r;
104
+ }
105
+
106
+ SIMDE__FUNCTION_ATTRIBUTES
107
+ simde_float32x2_t
108
+ simde_vmul_f32(simde_float32x2_t a, simde_float32x2_t b) {
109
+ simde_float32x2_t r;
110
+ #if defined(SIMDE_NEON_NATIVE)
111
+ r.n = vmul_f32(a.n, b.n);
112
+ #elif defined(SIMDE_MMX_NATIVE)
113
+ r.mmx = _mm_mul_ps(a.mmx, b.mmx);
114
+ #else
115
+ SIMDE__VECTORIZE
116
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
117
+ r.f32[i] = a.f32[i] * b.f32[i];
118
+ }
119
+ #endif
120
+ return r;
121
+ }
122
+
123
+ SIMDE__FUNCTION_ATTRIBUTES
124
+ simde_float32x2_t
125
+ simde_vsub_f32(simde_float32x2_t a, simde_float32x2_t b) {
126
+ simde_float32x2_t r;
127
+ #if defined(SIMDE_NEON_NATIVE)
128
+ r.n = vsub_f32(a.n, b.n);
129
+ #elif defined(SIMDE_MMX_NATIVE)
130
+ r.mmx = _mm_sub_ps(a.mmx, b.mmx);
131
+ #else
132
+ SIMDE__VECTORIZE
133
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
134
+ r.f32[i] = a.f32[i] - b.f32[i];
135
+ }
136
+ #endif
137
+ return r;
138
+ }
139
+
140
+ #endif
@@ -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/float32x4.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_FLOAT32X4_H)
29
+ #define SIMDE__NEON_FLOAT32X4_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ simde_float32 f32 SIMDE_VECTOR(16) SIMDE_MAY_ALIAS;
34
+ #else
35
+ simde_float32 f32[4];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ float32x4_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx[2];
44
+ #endif
45
+ #if defined(SIMDE_NEON_SSE)
46
+ __m128 sse;
47
+ #endif
48
+ } simde_float32x4_t;
49
+
50
+ #if defined(SIMDE_NEON_NATIVE)
51
+ HEDLEY_STATIC_ASSERT(sizeof(float32x4_t) == sizeof(simde_float32x4_t), "float32x4_t size doesn't match simde_float32x4_t size");
52
+ #endif
53
+ HEDLEY_STATIC_ASSERT(16 == sizeof(simde_float32x4_t), "simde_float32x4_t size incorrect");
54
+
55
+ SIMDE__FUNCTION_ATTRIBUTES
56
+ simde_float32x4_t
57
+ simde_vaddq_f32(simde_float32x4_t a, simde_float32x4_t b) {
58
+ simde_float32x4_t r;
59
+ #if defined(SIMDE_NEON_NATIVE)
60
+ r.n = vaddq_f32(a.n, b.n);
61
+ #else
62
+ SIMDE__VECTORIZE
63
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
64
+ r.f32[i] = a.f32[i] + b.f32[i];
65
+ }
66
+ #endif
67
+ return r;
68
+ }
69
+
70
+ SIMDE__FUNCTION_ATTRIBUTES
71
+ simde_float32x4_t
72
+ simde_vld1q_f32 (simde_float32 const ptr[4]) {
73
+ simde_float32x4_t r;
74
+ #if defined(SIMDE_NEON_NATIVE)
75
+ r.n = vld1q_f32(ptr);
76
+ #else
77
+ SIMDE__VECTORIZE
78
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
79
+ r.f32[i] = ptr[i];
80
+ }
81
+ #endif
82
+ return r;
83
+ }
84
+
85
+ SIMDE__FUNCTION_ATTRIBUTES
86
+ simde_float32x4_t
87
+ simde_x_vloadq_f32 (simde_float32 l0, simde_float32 l1, simde_float32 l2, simde_float32 l3) {
88
+ simde_float32 v[] = { l0, l1, l2, l3 };
89
+ return simde_vld1q_f32(v);
90
+ }
91
+
92
+ SIMDE__FUNCTION_ATTRIBUTES
93
+ simde_float32x4_t
94
+ simde_vdupq_n_f32 (simde_float32 value) {
95
+ simde_float32x4_t r;
96
+ #if defined(SIMDE_NEON_NATIVE)
97
+ r.n = vdupq_n_f32(value);
98
+ #else
99
+ SIMDE__VECTORIZE
100
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
101
+ r.f32[i] = value;
102
+ }
103
+ #endif
104
+ return r;
105
+ }
106
+
107
+ SIMDE__FUNCTION_ATTRIBUTES
108
+ simde_float32x4_t
109
+ simde_vmulq_f32(simde_float32x4_t a, simde_float32x4_t b) {
110
+ simde_float32x4_t r;
111
+ #if defined(SIMDE_NEON_NATIVE)
112
+ r.n = vmulq_f32(a.n, b.n);
113
+ #else
114
+ SIMDE__VECTORIZE
115
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
116
+ r.f32[i] = a.f32[i] * b.f32[i];
117
+ }
118
+ #endif
119
+ return r;
120
+ }
121
+
122
+ SIMDE__FUNCTION_ATTRIBUTES
123
+ simde_float32x4_t
124
+ simde_vsubq_f32(simde_float32x4_t a, simde_float32x4_t b) {
125
+ simde_float32x4_t r;
126
+ #if defined(SIMDE_NEON_NATIVE)
127
+ r.n = vsubq_f32(a.n, b.n);
128
+ #else
129
+ SIMDE__VECTORIZE
130
+ for (size_t i = 0 ; i < (sizeof(r.f32) / sizeof(r.f32[0])) ; i++) {
131
+ r.f32[i] = a.f32[i] - b.f32[i];
132
+ }
133
+ #endif
134
+ return r;
135
+ }
136
+
137
+ #endif
@@ -0,0 +1,142 @@
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/float64x1.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_FLOAT64X1_H)
29
+ #define SIMDE__NEON_FLOAT64X1_H
30
+
31
+ #if defined(SIMDE_NEON64_NATIVE)
32
+ # if defined(HEDLEY_GCC_VERSION) && !HEDLEY_GCC_VERSION_CHECK(4,9,0)
33
+ # elif defined(HEDLEY_MSVC_VERSION)
34
+ # else
35
+ # define SIMDE_NEON_HAVE_FLOAT64X1
36
+ # endif
37
+ #endif
38
+
39
+ typedef union {
40
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
41
+ simde_float64 f64 SIMDE_VECTOR(8) SIMDE_MAY_ALIAS;
42
+ #else
43
+ simde_float64 f64[1];
44
+ #endif
45
+
46
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X1)
47
+ float64x1_t n;
48
+ #endif
49
+
50
+ #if defined(SIMDE_NEON_MMX)
51
+ __m64 mmx;
52
+ #endif
53
+ } simde_float64x1_t;
54
+
55
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X1)
56
+ HEDLEY_STATIC_ASSERT(sizeof(float64x1_t) == sizeof(simde_float64x1_t), "float64x1_t size doesn't match simde_float64x1_t size");
57
+ #endif
58
+ HEDLEY_STATIC_ASSERT(8 == sizeof(simde_float64x1_t), "simde_float64x1_t size incorrect");
59
+
60
+ SIMDE__FUNCTION_ATTRIBUTES
61
+ simde_float64x1_t
62
+ simde_vadd_f64(simde_float64x1_t a, simde_float64x1_t b) {
63
+ simde_float64x1_t r;
64
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X1)
65
+ r.n = vadd_f64(a.n, b.n);
66
+ #else
67
+ SIMDE__VECTORIZE
68
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
69
+ r.f64[i] = a.f64[i] + b.f64[i];
70
+ }
71
+ #endif
72
+ return r;
73
+ }
74
+
75
+ SIMDE__FUNCTION_ATTRIBUTES
76
+ simde_float64x1_t
77
+ simde_vld1_f64 (simde_float64 const ptr[1]) {
78
+ simde_float64x1_t r;
79
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X1)
80
+ r.n = vld1_f64(ptr);
81
+ #else
82
+ SIMDE__VECTORIZE
83
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
84
+ r.f64[i] = ptr[i];
85
+ }
86
+ #endif
87
+ return r;
88
+ }
89
+
90
+ SIMDE__FUNCTION_ATTRIBUTES
91
+ simde_float64x1_t
92
+ simde_x_vload_f64 (simde_float64 l0) {
93
+ simde_float64 v[] = { l0 };
94
+ return simde_vld1_f64(v);
95
+ }
96
+
97
+ SIMDE__FUNCTION_ATTRIBUTES
98
+ simde_float64x1_t
99
+ simde_vdup_n_f64 (simde_float64 value) {
100
+ simde_float64x1_t r;
101
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X1)
102
+ r.n = vdup_n_f64(value);
103
+ #else
104
+ SIMDE__VECTORIZE
105
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
106
+ r.f64[i] = value;
107
+ }
108
+ #endif
109
+ return r;
110
+ }
111
+
112
+ SIMDE__FUNCTION_ATTRIBUTES
113
+ simde_float64x1_t
114
+ simde_vmul_f64(simde_float64x1_t a, simde_float64x1_t b) {
115
+ simde_float64x1_t r;
116
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X1)
117
+ r.n = vmul_f64(a.n, b.n);
118
+ #else
119
+ SIMDE__VECTORIZE
120
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
121
+ r.f64[i] = a.f64[i] * b.f64[i];
122
+ }
123
+ #endif
124
+ return r;
125
+ }
126
+
127
+ SIMDE__FUNCTION_ATTRIBUTES
128
+ simde_float64x1_t
129
+ simde_vsub_f64(simde_float64x1_t a, simde_float64x1_t b) {
130
+ simde_float64x1_t r;
131
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X1)
132
+ r.n = vsub_f64(a.n, b.n);
133
+ #else
134
+ SIMDE__VECTORIZE
135
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
136
+ r.f64[i] = a.f64[i] - b.f64[i];
137
+ }
138
+ #endif
139
+ return r;
140
+ }
141
+
142
+ #endif
@@ -0,0 +1,145 @@
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/float64x2.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_FLOAT64X2_H)
29
+ #define SIMDE__NEON_FLOAT64X2_H
30
+
31
+ #if defined(SIMDE_NEON64_NATIVE)
32
+ # if defined(HEDLEY_GCC_VERSION) && !HEDLEY_GCC_VERSION_CHECK(4,9,0)
33
+ # elif defined(HEDLEY_MSVC_VERSION)
34
+ # else
35
+ # define SIMDE_NEON_HAVE_FLOAT64X2
36
+ # endif
37
+ #endif
38
+
39
+ typedef union {
40
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
41
+ simde_float64 f64 SIMDE_VECTOR(16) SIMDE_MAY_ALIAS;
42
+ #else
43
+ simde_float64 f64[2];
44
+ #endif
45
+
46
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X2)
47
+ float64x2_t n;
48
+ #endif
49
+
50
+ #if defined(SIMDE_NEON_MMX)
51
+ __m64 mmx[2];
52
+ #endif
53
+ #if defined(SIMDE_NEON_SSE2)
54
+ __m128i sse;
55
+ #endif
56
+ } simde_float64x2_t;
57
+
58
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X2)
59
+ HEDLEY_STATIC_ASSERT(sizeof(float64x2_t) == sizeof(simde_float64x2_t), "float64x2_t size doesn't match simde_float64x2_t size");
60
+ #endif
61
+ HEDLEY_STATIC_ASSERT(16 == sizeof(simde_float64x2_t), "simde_float64x2_t size incorrect");
62
+
63
+ SIMDE__FUNCTION_ATTRIBUTES
64
+ simde_float64x2_t
65
+ simde_vaddq_f64(simde_float64x2_t a, simde_float64x2_t b) {
66
+ simde_float64x2_t r;
67
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X2)
68
+ r.n = vaddq_f64(a.n, b.n);
69
+ #else
70
+ SIMDE__VECTORIZE
71
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
72
+ r.f64[i] = a.f64[i] + b.f64[i];
73
+ }
74
+ #endif
75
+ return r;
76
+ }
77
+
78
+ SIMDE__FUNCTION_ATTRIBUTES
79
+ simde_float64x2_t
80
+ simde_vld1q_f64 (simde_float64 const ptr[2]) {
81
+ simde_float64x2_t r;
82
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X2)
83
+ r.n = vld1q_f64(ptr);
84
+ #else
85
+ SIMDE__VECTORIZE
86
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
87
+ r.f64[i] = ptr[i];
88
+ }
89
+ #endif
90
+ return r;
91
+ }
92
+
93
+ SIMDE__FUNCTION_ATTRIBUTES
94
+ simde_float64x2_t
95
+ simde_x_vloadq_f64 (simde_float64 l0, simde_float64 l1) {
96
+ simde_float64 v[] = { l0, l1 };
97
+ return simde_vld1q_f64(v);
98
+ }
99
+
100
+ SIMDE__FUNCTION_ATTRIBUTES
101
+ simde_float64x2_t
102
+ simde_vdupq_n_f64 (simde_float64 value) {
103
+ simde_float64x2_t r;
104
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X2)
105
+ r.n = vdupq_n_f64(value);
106
+ #else
107
+ SIMDE__VECTORIZE
108
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
109
+ r.f64[i] = value;
110
+ }
111
+ #endif
112
+ return r;
113
+ }
114
+
115
+ SIMDE__FUNCTION_ATTRIBUTES
116
+ simde_float64x2_t
117
+ simde_vmulq_f64(simde_float64x2_t a, simde_float64x2_t b) {
118
+ simde_float64x2_t r;
119
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X2)
120
+ r.n = vmulq_f64(a.n, b.n);
121
+ #else
122
+ SIMDE__VECTORIZE
123
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
124
+ r.f64[i] = a.f64[i] * b.f64[i];
125
+ }
126
+ #endif
127
+ return r;
128
+ }
129
+
130
+ SIMDE__FUNCTION_ATTRIBUTES
131
+ simde_float64x2_t
132
+ simde_vsubq_f64(simde_float64x2_t a, simde_float64x2_t b) {
133
+ simde_float64x2_t r;
134
+ #if defined(SIMDE_NEON_HAVE_FLOAT64X2)
135
+ r.n = vsubq_f64(a.n, b.n);
136
+ #else
137
+ SIMDE__VECTORIZE
138
+ for (size_t i = 0 ; i < (sizeof(r.f64) / sizeof(r.f64[0])) ; i++) {
139
+ r.f64[i] = a.f64[i] - b.f64[i];
140
+ }
141
+ #endif
142
+ return r;
143
+ }
144
+
145
+ #endif
@@ -0,0 +1,140 @@
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/int16x4.h directly; use simde/arm/neon.h.
26
+ #endif
27
+
28
+ #if !defined(SIMDE__NEON_INT16X4_H)
29
+ #define SIMDE__NEON_INT16X4_H
30
+
31
+ typedef union {
32
+ #if defined(SIMDE_VECTOR_SUBSCRIPT)
33
+ int16_t i16 SIMDE_VECTOR(8) SIMDE_MAY_ALIAS;
34
+ #else
35
+ int16_t i16[4];
36
+ #endif
37
+
38
+ #if defined(SIMDE_NEON_NATIVE)
39
+ int16x4_t n;
40
+ #endif
41
+
42
+ #if defined(SIMDE_NEON_MMX)
43
+ __m64 mmx;
44
+ #endif
45
+ } simde_int16x4_t;
46
+
47
+ #if defined(SIMDE_NEON_NATIVE)
48
+ HEDLEY_STATIC_ASSERT(sizeof(int16x4_t) == sizeof(simde_int16x4_t), "int16x4_t size doesn't match simde_int16x4_t size");
49
+ #endif
50
+ HEDLEY_STATIC_ASSERT(8 == sizeof(simde_int16x4_t), "simde_int16x4_t size incorrect");
51
+
52
+ SIMDE__FUNCTION_ATTRIBUTES
53
+ simde_int16x4_t
54
+ simde_vadd_s16(simde_int16x4_t a, simde_int16x4_t b) {
55
+ simde_int16x4_t r;
56
+ #if defined(SIMDE_NEON_NATIVE)
57
+ r.n = vadd_s16(a.n, b.n);
58
+ #elif defined(SIMDE_MMX_NATIVE)
59
+ r.mmx = _mm_add_pi16(a.mmx, b.mmx);
60
+ #else
61
+ SIMDE__VECTORIZE
62
+ for (size_t i = 0 ; i < (sizeof(r.i16) / sizeof(r.i16[0])) ; i++) {
63
+ r.i16[i] = a.i16[i] + b.i16[i];
64
+ }
65
+ #endif
66
+ return r;
67
+ }
68
+
69
+ SIMDE__FUNCTION_ATTRIBUTES
70
+ simde_int16x4_t
71
+ simde_vld1_s16 (int16_t const ptr[4]) {
72
+ simde_int16x4_t r;
73
+ #if defined(SIMDE_NEON_NATIVE)
74
+ r.n = vld1_s16(ptr);
75
+ #else
76
+ SIMDE__VECTORIZE
77
+ for (size_t i = 0 ; i < (sizeof(r.i16) / sizeof(r.i16[0])) ; i++) {
78
+ r.i16[i] = ptr[i];
79
+ }
80
+ #endif
81
+ return r;
82
+ }
83
+
84
+ SIMDE__FUNCTION_ATTRIBUTES
85
+ simde_int16x4_t
86
+ simde_x_vload_s16 (int16_t l0, int16_t l1, int16_t l2, int16_t l3) {
87
+ int16_t v[] = { l0, l1, l2, l3 };
88
+ return simde_vld1_s16(v);
89
+ }
90
+
91
+ SIMDE__FUNCTION_ATTRIBUTES
92
+ simde_int16x4_t
93
+ simde_vdup_n_s16 (int16_t value) {
94
+ simde_int16x4_t r;
95
+ #if defined(SIMDE_NEON_NATIVE)
96
+ r.n = vdup_n_s16(value);
97
+ #else
98
+ SIMDE__VECTORIZE
99
+ for (size_t i = 0 ; i < (sizeof(r.i16) / sizeof(r.i16[0])) ; i++) {
100
+ r.i16[i] = value;
101
+ }
102
+ #endif
103
+ return r;
104
+ }
105
+
106
+ SIMDE__FUNCTION_ATTRIBUTES
107
+ simde_int16x4_t
108
+ simde_vmul_s16(simde_int16x4_t a, simde_int16x4_t b) {
109
+ simde_int16x4_t r;
110
+ #if defined(SIMDE_NEON_NATIVE)
111
+ r.n = vmul_s16(a.n, b.n);
112
+ #elif defined(SIMDE_MMX_NATIVE)
113
+ r.mmx = _mm_mul_pi16(a.mmx, b.mmx);
114
+ #else
115
+ SIMDE__VECTORIZE
116
+ for (size_t i = 0 ; i < (sizeof(r.i16) / sizeof(r.i16[0])) ; i++) {
117
+ r.i16[i] = a.i16[i] * b.i16[i];
118
+ }
119
+ #endif
120
+ return r;
121
+ }
122
+
123
+ SIMDE__FUNCTION_ATTRIBUTES
124
+ simde_int16x4_t
125
+ simde_vsub_s16(simde_int16x4_t a, simde_int16x4_t b) {
126
+ simde_int16x4_t r;
127
+ #if defined(SIMDE_NEON_NATIVE)
128
+ r.n = vsub_s16(a.n, b.n);
129
+ #elif defined(SIMDE_MMX_NATIVE)
130
+ r.mmx = _mm_sub_pi16(a.mmx, b.mmx);
131
+ #else
132
+ SIMDE__VECTORIZE
133
+ for (size_t i = 0 ; i < (sizeof(r.i16) / sizeof(r.i16[0])) ; i++) {
134
+ r.i16[i] = a.i16[i] - b.i16[i];
135
+ }
136
+ #endif
137
+ return r;
138
+ }
139
+
140
+ #endif