minimap2 0.2.25.1 → 0.2.25.2

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 (100) hide show
  1. checksums.yaml +4 -4
  2. data/ext/Rakefile +2 -2
  3. data/lib/minimap2/version.rb +1 -1
  4. metadata +1 -97
  5. data/ext/minimap2/lib/simde/CONTRIBUTING.md +0 -114
  6. data/ext/minimap2/lib/simde/COPYING +0 -20
  7. data/ext/minimap2/lib/simde/README.md +0 -333
  8. data/ext/minimap2/lib/simde/amalgamate.py +0 -58
  9. data/ext/minimap2/lib/simde/meson.build +0 -33
  10. data/ext/minimap2/lib/simde/netlify.toml +0 -20
  11. data/ext/minimap2/lib/simde/simde/arm/neon/float32x2.h +0 -140
  12. data/ext/minimap2/lib/simde/simde/arm/neon/float32x4.h +0 -137
  13. data/ext/minimap2/lib/simde/simde/arm/neon/float64x1.h +0 -142
  14. data/ext/minimap2/lib/simde/simde/arm/neon/float64x2.h +0 -145
  15. data/ext/minimap2/lib/simde/simde/arm/neon/int16x4.h +0 -140
  16. data/ext/minimap2/lib/simde/simde/arm/neon/int16x8.h +0 -145
  17. data/ext/minimap2/lib/simde/simde/arm/neon/int32x2.h +0 -140
  18. data/ext/minimap2/lib/simde/simde/arm/neon/int32x4.h +0 -143
  19. data/ext/minimap2/lib/simde/simde/arm/neon/int64x1.h +0 -137
  20. data/ext/minimap2/lib/simde/simde/arm/neon/int64x2.h +0 -141
  21. data/ext/minimap2/lib/simde/simde/arm/neon/int8x16.h +0 -147
  22. data/ext/minimap2/lib/simde/simde/arm/neon/int8x8.h +0 -141
  23. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x4.h +0 -134
  24. data/ext/minimap2/lib/simde/simde/arm/neon/uint16x8.h +0 -138
  25. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x2.h +0 -134
  26. data/ext/minimap2/lib/simde/simde/arm/neon/uint32x4.h +0 -137
  27. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x1.h +0 -131
  28. data/ext/minimap2/lib/simde/simde/arm/neon/uint64x2.h +0 -135
  29. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x16.h +0 -141
  30. data/ext/minimap2/lib/simde/simde/arm/neon/uint8x8.h +0 -135
  31. data/ext/minimap2/lib/simde/simde/arm/neon.h +0 -97
  32. data/ext/minimap2/lib/simde/simde/check.h +0 -267
  33. data/ext/minimap2/lib/simde/simde/debug-trap.h +0 -83
  34. data/ext/minimap2/lib/simde/simde/hedley.h +0 -1899
  35. data/ext/minimap2/lib/simde/simde/simde-arch.h +0 -445
  36. data/ext/minimap2/lib/simde/simde/simde-common.h +0 -697
  37. data/ext/minimap2/lib/simde/simde/x86/avx.h +0 -5385
  38. data/ext/minimap2/lib/simde/simde/x86/avx2.h +0 -2402
  39. data/ext/minimap2/lib/simde/simde/x86/avx512bw.h +0 -391
  40. data/ext/minimap2/lib/simde/simde/x86/avx512f.h +0 -3389
  41. data/ext/minimap2/lib/simde/simde/x86/avx512vl.h +0 -112
  42. data/ext/minimap2/lib/simde/simde/x86/fma.h +0 -659
  43. data/ext/minimap2/lib/simde/simde/x86/mmx.h +0 -2210
  44. data/ext/minimap2/lib/simde/simde/x86/sse.h +0 -3696
  45. data/ext/minimap2/lib/simde/simde/x86/sse2.h +0 -5991
  46. data/ext/minimap2/lib/simde/simde/x86/sse3.h +0 -343
  47. data/ext/minimap2/lib/simde/simde/x86/sse4.1.h +0 -1783
  48. data/ext/minimap2/lib/simde/simde/x86/sse4.2.h +0 -105
  49. data/ext/minimap2/lib/simde/simde/x86/ssse3.h +0 -1053
  50. data/ext/minimap2/lib/simde/simde/x86/svml.h +0 -543
  51. data/ext/minimap2/lib/simde/test/CMakeLists.txt +0 -166
  52. data/ext/minimap2/lib/simde/test/arm/meson.build +0 -4
  53. data/ext/minimap2/lib/simde/test/arm/neon/meson.build +0 -23
  54. data/ext/minimap2/lib/simde/test/arm/neon/skel.c +0 -871
  55. data/ext/minimap2/lib/simde/test/arm/neon/test-neon-internal.h +0 -134
  56. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.c +0 -39
  57. data/ext/minimap2/lib/simde/test/arm/neon/test-neon.h +0 -10
  58. data/ext/minimap2/lib/simde/test/arm/neon/vadd.c +0 -1260
  59. data/ext/minimap2/lib/simde/test/arm/neon/vdup_n.c +0 -873
  60. data/ext/minimap2/lib/simde/test/arm/neon/vmul.c +0 -1084
  61. data/ext/minimap2/lib/simde/test/arm/neon/vsub.c +0 -1260
  62. data/ext/minimap2/lib/simde/test/arm/test-arm-internal.h +0 -18
  63. data/ext/minimap2/lib/simde/test/arm/test-arm.c +0 -20
  64. data/ext/minimap2/lib/simde/test/arm/test-arm.h +0 -8
  65. data/ext/minimap2/lib/simde/test/cmake/AddCompilerFlags.cmake +0 -171
  66. data/ext/minimap2/lib/simde/test/cmake/ExtraWarningFlags.cmake +0 -68
  67. data/ext/minimap2/lib/simde/test/meson.build +0 -64
  68. data/ext/minimap2/lib/simde/test/munit/COPYING +0 -21
  69. data/ext/minimap2/lib/simde/test/munit/Makefile +0 -55
  70. data/ext/minimap2/lib/simde/test/munit/README.md +0 -54
  71. data/ext/minimap2/lib/simde/test/munit/example.c +0 -351
  72. data/ext/minimap2/lib/simde/test/munit/meson.build +0 -37
  73. data/ext/minimap2/lib/simde/test/munit/munit.c +0 -2055
  74. data/ext/minimap2/lib/simde/test/munit/munit.h +0 -535
  75. data/ext/minimap2/lib/simde/test/run-tests.c +0 -20
  76. data/ext/minimap2/lib/simde/test/run-tests.h +0 -260
  77. data/ext/minimap2/lib/simde/test/x86/avx.c +0 -13752
  78. data/ext/minimap2/lib/simde/test/x86/avx2.c +0 -9977
  79. data/ext/minimap2/lib/simde/test/x86/avx512bw.c +0 -2664
  80. data/ext/minimap2/lib/simde/test/x86/avx512f.c +0 -10416
  81. data/ext/minimap2/lib/simde/test/x86/avx512vl.c +0 -210
  82. data/ext/minimap2/lib/simde/test/x86/fma.c +0 -2557
  83. data/ext/minimap2/lib/simde/test/x86/meson.build +0 -33
  84. data/ext/minimap2/lib/simde/test/x86/mmx.c +0 -2878
  85. data/ext/minimap2/lib/simde/test/x86/skel.c +0 -2984
  86. data/ext/minimap2/lib/simde/test/x86/sse.c +0 -5121
  87. data/ext/minimap2/lib/simde/test/x86/sse2.c +0 -9860
  88. data/ext/minimap2/lib/simde/test/x86/sse3.c +0 -486
  89. data/ext/minimap2/lib/simde/test/x86/sse4.1.c +0 -3446
  90. data/ext/minimap2/lib/simde/test/x86/sse4.2.c +0 -101
  91. data/ext/minimap2/lib/simde/test/x86/ssse3.c +0 -2084
  92. data/ext/minimap2/lib/simde/test/x86/svml.c +0 -1545
  93. data/ext/minimap2/lib/simde/test/x86/test-avx.h +0 -16
  94. data/ext/minimap2/lib/simde/test/x86/test-avx512.h +0 -25
  95. data/ext/minimap2/lib/simde/test/x86/test-mmx.h +0 -13
  96. data/ext/minimap2/lib/simde/test/x86/test-sse.h +0 -13
  97. data/ext/minimap2/lib/simde/test/x86/test-sse2.h +0 -13
  98. data/ext/minimap2/lib/simde/test/x86/test-x86-internal.h +0 -196
  99. data/ext/minimap2/lib/simde/test/x86/test-x86.c +0 -48
  100. data/ext/minimap2/lib/simde/test/x86/test-x86.h +0 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f58943e39da8f734af4ee4d16b5d335825ee7cf94cc45d9cf88a41d7adfe6afe
4
- data.tar.gz: 2cb372b02bcb2cc763fb3a9fcd82219c653e61ac7f28a039e0a4d03b054aab35
3
+ metadata.gz: 4b39dfb4b48657157d832341715e82568012249c35f3f5a8c7bb406578ca6e0a
4
+ data.tar.gz: 83cb330e21c3cec98622f4fb8e865ae0f8871c2285b13df9eeb57bff4852ebce
5
5
  SHA512:
6
- metadata.gz: 52c827db192ac69bf99cfa1e8ff701a4d87965b7f443a82cdd10d109eebf31a6ac2ca966cc5b4a9d3bdcf1fdb4180f51a0f1c78f1bc6c5e937419ad3a78fa5d3
7
- data.tar.gz: 95fd63410ffc2aa088877c9545566aa32326899658ff5fb9ec92ac9cc1c8d89c28c6a849e50bd50d5fce4bc33c6af8b3f40a65c0270f7a6ccec181375c549fb1
6
+ metadata.gz: a7d94a3c71bd22f1441db0e54e004f0bde4e537d6066445a0940cdcfe634adc345332614d1dfeb138f732e5b1a15871612526a202d884ebcf7368091c9ba9e71
7
+ data.tar.gz: f4c453ec32a95c93781453c5914b79c47f2e5272517f16abb3939e07b0282c294820b7f7f175ee7d3b1f184eeb6b3af4cb745464cb37bf1a31fb204f97259128
data/ext/Rakefile CHANGED
@@ -37,7 +37,7 @@ namespace :minimap2 do
37
37
  end
38
38
  end
39
39
 
40
- desc "Clean"
40
+ desc "`make clean`"
41
41
  task :clean do
42
42
  Dir.chdir(minimap2_dir) do
43
43
  sh "make clean"
@@ -46,7 +46,7 @@ namespace :minimap2 do
46
46
 
47
47
  task cleanall: [:clean]
48
48
 
49
- desc "Clean all"
49
+ desc "`make clean` and remove shared lib"
50
50
  task :cleanall do
51
51
  Dir.chdir(minimap2_dir) do
52
52
  sh "rm #{target_path}" if File.exist?(target_path)
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Minimap2
4
4
  # Minimap2-2.25 (r1173)
5
- VERSION = "0.2.25.1"
5
+ VERSION = "0.2.25.2"
6
6
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minimap2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.25.1
4
+ version: 0.2.25.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - kojix2
@@ -87,102 +87,6 @@ files:
87
87
  - ext/minimap2/kthread.h
88
88
  - ext/minimap2/kvec.h
89
89
  - ext/minimap2/lchain.c
90
- - ext/minimap2/lib/simde/CONTRIBUTING.md
91
- - ext/minimap2/lib/simde/COPYING
92
- - ext/minimap2/lib/simde/README.md
93
- - ext/minimap2/lib/simde/amalgamate.py
94
- - ext/minimap2/lib/simde/meson.build
95
- - ext/minimap2/lib/simde/netlify.toml
96
- - ext/minimap2/lib/simde/simde/arm/neon.h
97
- - ext/minimap2/lib/simde/simde/arm/neon/float32x2.h
98
- - ext/minimap2/lib/simde/simde/arm/neon/float32x4.h
99
- - ext/minimap2/lib/simde/simde/arm/neon/float64x1.h
100
- - ext/minimap2/lib/simde/simde/arm/neon/float64x2.h
101
- - ext/minimap2/lib/simde/simde/arm/neon/int16x4.h
102
- - ext/minimap2/lib/simde/simde/arm/neon/int16x8.h
103
- - ext/minimap2/lib/simde/simde/arm/neon/int32x2.h
104
- - ext/minimap2/lib/simde/simde/arm/neon/int32x4.h
105
- - ext/minimap2/lib/simde/simde/arm/neon/int64x1.h
106
- - ext/minimap2/lib/simde/simde/arm/neon/int64x2.h
107
- - ext/minimap2/lib/simde/simde/arm/neon/int8x16.h
108
- - ext/minimap2/lib/simde/simde/arm/neon/int8x8.h
109
- - ext/minimap2/lib/simde/simde/arm/neon/uint16x4.h
110
- - ext/minimap2/lib/simde/simde/arm/neon/uint16x8.h
111
- - ext/minimap2/lib/simde/simde/arm/neon/uint32x2.h
112
- - ext/minimap2/lib/simde/simde/arm/neon/uint32x4.h
113
- - ext/minimap2/lib/simde/simde/arm/neon/uint64x1.h
114
- - ext/minimap2/lib/simde/simde/arm/neon/uint64x2.h
115
- - ext/minimap2/lib/simde/simde/arm/neon/uint8x16.h
116
- - ext/minimap2/lib/simde/simde/arm/neon/uint8x8.h
117
- - ext/minimap2/lib/simde/simde/check.h
118
- - ext/minimap2/lib/simde/simde/debug-trap.h
119
- - ext/minimap2/lib/simde/simde/hedley.h
120
- - ext/minimap2/lib/simde/simde/simde-arch.h
121
- - ext/minimap2/lib/simde/simde/simde-common.h
122
- - ext/minimap2/lib/simde/simde/x86/avx.h
123
- - ext/minimap2/lib/simde/simde/x86/avx2.h
124
- - ext/minimap2/lib/simde/simde/x86/avx512bw.h
125
- - ext/minimap2/lib/simde/simde/x86/avx512f.h
126
- - ext/minimap2/lib/simde/simde/x86/avx512vl.h
127
- - ext/minimap2/lib/simde/simde/x86/fma.h
128
- - ext/minimap2/lib/simde/simde/x86/mmx.h
129
- - ext/minimap2/lib/simde/simde/x86/sse.h
130
- - ext/minimap2/lib/simde/simde/x86/sse2.h
131
- - ext/minimap2/lib/simde/simde/x86/sse3.h
132
- - ext/minimap2/lib/simde/simde/x86/sse4.1.h
133
- - ext/minimap2/lib/simde/simde/x86/sse4.2.h
134
- - ext/minimap2/lib/simde/simde/x86/ssse3.h
135
- - ext/minimap2/lib/simde/simde/x86/svml.h
136
- - ext/minimap2/lib/simde/test/CMakeLists.txt
137
- - ext/minimap2/lib/simde/test/arm/meson.build
138
- - ext/minimap2/lib/simde/test/arm/neon/meson.build
139
- - ext/minimap2/lib/simde/test/arm/neon/skel.c
140
- - ext/minimap2/lib/simde/test/arm/neon/test-neon-internal.h
141
- - ext/minimap2/lib/simde/test/arm/neon/test-neon.c
142
- - ext/minimap2/lib/simde/test/arm/neon/test-neon.h
143
- - ext/minimap2/lib/simde/test/arm/neon/vadd.c
144
- - ext/minimap2/lib/simde/test/arm/neon/vdup_n.c
145
- - ext/minimap2/lib/simde/test/arm/neon/vmul.c
146
- - ext/minimap2/lib/simde/test/arm/neon/vsub.c
147
- - ext/minimap2/lib/simde/test/arm/test-arm-internal.h
148
- - ext/minimap2/lib/simde/test/arm/test-arm.c
149
- - ext/minimap2/lib/simde/test/arm/test-arm.h
150
- - ext/minimap2/lib/simde/test/cmake/AddCompilerFlags.cmake
151
- - ext/minimap2/lib/simde/test/cmake/ExtraWarningFlags.cmake
152
- - ext/minimap2/lib/simde/test/meson.build
153
- - ext/minimap2/lib/simde/test/munit/COPYING
154
- - ext/minimap2/lib/simde/test/munit/Makefile
155
- - ext/minimap2/lib/simde/test/munit/README.md
156
- - ext/minimap2/lib/simde/test/munit/example.c
157
- - ext/minimap2/lib/simde/test/munit/meson.build
158
- - ext/minimap2/lib/simde/test/munit/munit.c
159
- - ext/minimap2/lib/simde/test/munit/munit.h
160
- - ext/minimap2/lib/simde/test/run-tests.c
161
- - ext/minimap2/lib/simde/test/run-tests.h
162
- - ext/minimap2/lib/simde/test/x86/avx.c
163
- - ext/minimap2/lib/simde/test/x86/avx2.c
164
- - ext/minimap2/lib/simde/test/x86/avx512bw.c
165
- - ext/minimap2/lib/simde/test/x86/avx512f.c
166
- - ext/minimap2/lib/simde/test/x86/avx512vl.c
167
- - ext/minimap2/lib/simde/test/x86/fma.c
168
- - ext/minimap2/lib/simde/test/x86/meson.build
169
- - ext/minimap2/lib/simde/test/x86/mmx.c
170
- - ext/minimap2/lib/simde/test/x86/skel.c
171
- - ext/minimap2/lib/simde/test/x86/sse.c
172
- - ext/minimap2/lib/simde/test/x86/sse2.c
173
- - ext/minimap2/lib/simde/test/x86/sse3.c
174
- - ext/minimap2/lib/simde/test/x86/sse4.1.c
175
- - ext/minimap2/lib/simde/test/x86/sse4.2.c
176
- - ext/minimap2/lib/simde/test/x86/ssse3.c
177
- - ext/minimap2/lib/simde/test/x86/svml.c
178
- - ext/minimap2/lib/simde/test/x86/test-avx.h
179
- - ext/minimap2/lib/simde/test/x86/test-avx512.h
180
- - ext/minimap2/lib/simde/test/x86/test-mmx.h
181
- - ext/minimap2/lib/simde/test/x86/test-sse.h
182
- - ext/minimap2/lib/simde/test/x86/test-sse2.h
183
- - ext/minimap2/lib/simde/test/x86/test-x86-internal.h
184
- - ext/minimap2/lib/simde/test/x86/test-x86.c
185
- - ext/minimap2/lib/simde/test/x86/test-x86.h
186
90
  - ext/minimap2/main.c
187
91
  - ext/minimap2/map.c
188
92
  - ext/minimap2/minimap.h
@@ -1,114 +0,0 @@
1
- # Contributing to SIMDe
2
-
3
- First off, if you're even reading this, thank you! There is a lot of
4
- work to do, and any help is appreciated.
5
-
6
- If you haven't already, please read the
7
- [README](https://github.com/nemequ/simde/blob/master/README.md). The
8
- [wiki](https://github.com/nemequ/simde/wiki) also has some good
9
- information, especially the
10
- [FAQ](https://github.com/nemequ/simde/wiki/FAQ) and a guide on how to
11
- [implement a new
12
- function](https://github.com/nemequ/simde/wiki/Implementing-a-New-Function).
13
-
14
- For information on developing for architectures you don't have access
15
- to, please see the [Development
16
- Environment](https://github.com/nemequ/simde/wiki/Development-Environment)
17
- page on the wiki.
18
-
19
- If you still have questions, or if anything below doesn't make sense
20
- to you, please feel free to use the [issue
21
- tracker](https://github.com/nemequ/simde/issues) or the [mailing
22
- list](https://groups.google.com/forum/#!forum/simde) to ask. I know
23
- the SIMDe documentation needs a lot of improvement, and asking
24
- questions will help us understand what is missing, so please don't be
25
- shy!
26
-
27
- ## Building the Tests
28
-
29
- SIMDe contains an extensive test suite used for development. Most
30
- users will never need to build the suite, but if you're contributing
31
- code to SIMDe you'll need to build them.
32
-
33
- Here is the basic procedure for compiling the tests:
34
-
35
- ```bash
36
- mkdir test/build
37
- cd test/build
38
- CFLAGS="-march=native" CXXFLAGS="-march=native" cmake ..
39
- make -j
40
- ./run-tests
41
- ```
42
-
43
- Note that `-march=native` may not be the right flag for your compiler.
44
- That should work for most compilers on x86/x86_64, though MSVC is an
45
- exception (try `/arch:AVX2` instead of `-march=native`). On other
46
- architectures please consult your compiler documentation to find out
47
- what flags you should use to enable the SIMD extension for your target
48
- platform. Here are a few to try:
49
-
50
- * ARM:
51
- * `-march=armv8-a+simd` (for ARMv8)
52
- * `-march=armv7-a -mfpu=neon` (for ARMv7)
53
- * POWER
54
- * `-mcpu=native`
55
-
56
- If you need a flag not listed above, please let us know so we can add
57
- it to the list.
58
-
59
- ## Coding Style
60
-
61
- SIMDe uses two spaces for indentation. Please adjust your editor
62
- accordingly.
63
-
64
- The coding style for preprocessor macros is a bit mixed since I made
65
- some changes mid-project. For new code, please indent the
66
- preprocessor conditions before the hash to the same level as the
67
- normal code would be, and indent the code inside of preprocessor
68
- conditions as if the conditions were normal code. For example:
69
-
70
- ```c
71
- int
72
- foo(void) {
73
- #if 1
74
- bar();
75
- #else
76
- baz();
77
- #endif
78
- }
79
- ```
80
-
81
- Other than that, please just try to follow the existing style. We'll
82
- add new rules here as the need arises.
83
-
84
- ## Commit Messages
85
-
86
- Git commit messages should contain lines no longer than 72 characters.
87
- The first line should always be a one-line summary of the commit, with
88
- the relevant component followed by a colon and a space (if
89
- applicable), then the summary.
90
-
91
- If the one-line summary is insufficient to fully describe the changes
92
- further descriptive paragraphs should be added, separated by blank
93
- lines.
94
-
95
- For example:
96
-
97
- ```
98
- sse: add magical code to make everything go fast
99
-
100
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur
101
- interdum scelerisque risus non ultricies. Vivamus id tristique mauris.
102
- Mauris et augue vel urna aliquam posuere. Morbi in sem nec ante
103
- ullamcorper ultrices in quis nibh. In felis velit, semper a mauris sed,
104
- congue ullamcorper enim. Vestibulum ante ipsum primis in faucibus orci
105
- luctus et ultrices posuere cubilia Curae; Nulla facilisi. Donec
106
- scelerisque elit dui, et aliquet magna tincidunt eu.
107
-
108
- Curabitur rhoncus lacus ac elit pulvinar, quis posuere ante ultrices.
109
- Suspendisse at mauris vitae justo pretium tempor et in mauris. Nunc
110
- facilisis nulla a ante tincidunt, imperdiet rhoncus metus interdum.
111
- Vivamus sed nunc vel tellus porta consequat. Donec quis porttitor elit,
112
- et cursus urna. Donec et sapien lorem. In imperdiet magna at aliquet
113
- hendrerit.
114
- ```
@@ -1,20 +0,0 @@
1
- Copyright (c) 2017 Evan Nemerson <evan@nemerson.com>
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- 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 BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -1,333 +0,0 @@
1
- # SIMD Everywhere
2
- [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/simd-everywhere/community)
3
-
4
- The SIMDe header-only library provides fast, portable implementations of
5
- [SIMD intrinsics](https://en.wikipedia.org/wiki/SIMD) on hardware which
6
- doesn't natively support them, such as calling [SSE](https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions)
7
- functions on ARM. There is no performance penalty if the hardware
8
- supports the native implementation (*e.g.*, SSE/[AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions)
9
- runs at full speed on [x86](https://en.wikipedia.org/wiki/X86),
10
- [NEON](https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_(Neon)) on [ARM](https://en.wikipedia.org/wiki/ARM_architecture),
11
- *etc.*).
12
-
13
- This makes porting code to other architectures much easier in a few
14
- key ways:
15
-
16
- First, instead of forcing you to rewrite everything for each
17
- architecture, SIMDe lets you get a port up and running almost
18
- effortlessly. You can then start working on switching the most
19
- performance-critical sections to native intrinsics, improving
20
- performance gradually. SIMDe lets (for example) SSE/AVX and NEON code
21
- exist side-by-side, in the same implementation.
22
-
23
- Second, SIMDe makes it easier to write code targeting [ISA](https://en.wikipedia.org/wiki/Instruction_set_architecture)
24
- extensions you don't have convenient access to. You can run NEON code on your
25
- x86 machine *without an emulator*. Obviously you'll eventually want
26
- to test on the actual hardware you're targeting, but for most
27
- development, SIMDe can provide a much easier path.
28
-
29
- SIMDe takes a very different approach from most other SIMD abstraction
30
- layers in that it aims to expose the entire functionality of the
31
- underlying instruction set. Instead of limiting functionality to the
32
- lowest common denominator, SIMDe tries to minimize the amount of
33
- effort required to port while still allowing you the space to optimize
34
- as needed.
35
-
36
- The current focus is on writing complete portable implementations,
37
- though a large number of functions already have accelerated
38
- implementations using one (or more) of the following:
39
-
40
- * SIMD intrinsics from other ISA extensions (e.g., using NEON to
41
- implement SSE).
42
- * Compiler-specific vector extensions and built-ins such as
43
- [`__builtin_shufflevector`](http://clang.llvm.org/docs/LanguageExtensions.html#langext-builtin-shufflevector)
44
- and
45
- [`__builtin_convertvector`](http://clang.llvm.org/docs/LanguageExtensions.html#langext-builtin-convertvector)
46
- * Compiler auto-vectorization hints, using:
47
- * [OpenMP 4 SIMD](http://www.openmp.org/)
48
- * [Cilk Plus](https://www.cilkplus.org/)
49
- * [GCC loop-specific pragmas](https://gcc.gnu.org/onlinedocs/gcc/Loop-Specific-Pragmas.html)
50
- * [clang pragma loop hint directives](http://llvm.org/docs/Vectorizers.html#pragma-loop-hint-directives)
51
-
52
- For an example of a project using SIMDe, see
53
- [LZSSE-SIMDe](https://github.com/nemequ/LZSSE-SIMDe).
54
-
55
- You can [try SIMDe online](https://simde.netlify.com/godbolt/demo)
56
- using Compiler Explorer and an amalgamated SIMDe header.
57
-
58
- If you have any questions, please feel free to use the
59
- [issue tracker](https://github.com/nemequ/simde/issues) or the
60
- [mailing list](https://groups.google.com/forum/#!forum/simde).
61
-
62
- ## Current Status
63
-
64
- There are currently complete implementations of the following instruction
65
- sets:
66
-
67
- * [MMX](https://en.wikipedia.org/wiki/MMX_(instruction_set))
68
- * [SSE](https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions)
69
- * [SSE2](https://en.wikipedia.org/wiki/SSE2)
70
- * [SSE3](https://en.wikipedia.org/wiki/SSE3)
71
- * [SSSE3](https://en.wikipedia.org/wiki/SSSE3)
72
- * [SSE4.1](https://en.wikipedia.org/wiki/SSE4#SSE4.1)
73
- * [AVX](https://en.wikipedia.org/wiki/Advanced_Vector_Extensions)
74
- * [FMA](https://en.wikipedia.org/wiki/FMA_instruction_set)
75
-
76
- As well as partial support for many others; see the
77
- [instruction-set-support](https://github.com/nemequ/simde/issues?q=is%3Aissue+is%3Aopen+label%3Ainstruction-set-support+sort%3Aupdated-desc)
78
- label in the issue tracker for details on progress. If you'd like to
79
- be notified when an instruction set is available you may subscribe to
80
- the relevant issue.
81
-
82
- If you have a project you're interested in using with SIMDe but we
83
- don't yet support all the functions you need, please file an issue
84
- with a list of what's missing so we know what to prioritize.
85
-
86
- The `master` branch is protected so commits never reach it unless
87
- they have passed extensive CI checks. Status badges don't really
88
- make sense since they will always be green, but here are the links:
89
-
90
- * [Travis CI](https://travis-ci.org/nemequ/simde)
91
- * [AppVeyor](https://ci.appveyor.com/project/quixdb/simde)
92
- * [GitHub Actions](https://github.com/nemequ/simde/actions)
93
- * [Azure Pipelines](https://dev.azure.com/simd-everywhere/SIMDe/_build)
94
- * [Drone CI](https://cloud.drone.io/nemequ/simde)
95
-
96
- ## Contributing
97
-
98
- First off, if you're reading this: thank you! Even considering
99
- contributing to SIMDe is very much appreciated!
100
-
101
- SIMDe is a fairly large undertaking; there are a *lot* of functions to
102
- get through and a lot of opportunities for optimization on different
103
- platforms, so we're very happy for any help you can provide.
104
-
105
- Programmers of all skill levels are welcome, there are lots of tasks
106
- which are pretty straightforward and don't require any special
107
- expertise.
108
-
109
- If you're not sure how you'd like to contribute, please consider taking
110
- a look at [the issue tracker](https://github.com/nemequ/simde/issues).
111
- There is a [good first issue](https://github.com/nemequ/simde/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
112
- tag if you want to ease into a your first contributions, but if you're
113
- interested in something else please get in touch via the issue tracker;
114
- we're happy to help you get a handle on whatever you are interested in.
115
-
116
- If you're interested in implementing currently unimplemented functions,
117
- there is [a
118
- guide](https://github.com/nemequ/simde/wiki/Implementing-a-New-Function)
119
- explaining how to add new functions and how to quickly and easily get
120
- a test case in place. It's a bit rough right now, but if anything is
121
- unclear please feel free to use the issue tracker to ask about
122
- anything you're not clear on.
123
-
124
- ## Usage
125
-
126
- First, it is important to note that *you do not need two separate
127
- versions* (one using SIMDe, the other native). If the native functions
128
- are available SIMDe will use them, and compilers easily optimize away
129
- any overhead from SIMDe; all they have to do is some basic inlining.
130
- `-O2` should be enough, but we strongly recommend `-O3` (or whatever
131
- flag instructs your compiler to aggressizely optimize) since many of
132
- the portable fallbacks are substantially faster with aggressive
133
- auto-vectorization that isn't enabled at lower optimization levels.
134
-
135
- Each instruction set has a separate file; `x86/mmx.h` for MMX,
136
- `x86/sse.h` for SSE, `x86/sse2.h` for SSE2, and so on. Just include
137
- the header for whichever instruction set(s) you want, and SIMDe will
138
- provide the fastest implementation it can given which extensions
139
- you've enabled in your compiler (i.e., if you want to use NEON to
140
- implement SSE, you may need to pass something like `-mfpu=neon`
141
- or `-march=armv8-a+simd`. See
142
- [GCC ARM-Options](https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html)
143
- for more information).
144
-
145
- If you define `SIMDE_ENABLE_NATIVE_ALIASES` before including SIMDe
146
- you can use the same names as the native functions. Unfortunately,
147
- this is somewhat error-prone due to portability issues in the APIs, so
148
- it's recommended to only do this for testing. When
149
- `SIMDE_ENABLE_NATIVE_ALIASES` is undefined only the versions prefixed
150
- with `simde_` will be available; for example, the MMX `_mm_add_pi8`
151
- intrinsic becomes `simde_mm_add_pi8`, and `__m64` becomes `simde__m64`.
152
-
153
- Since SIMDe is meant to be portable, many functions which assume types
154
- are of a specific size have been altered to use fixed-width types
155
- instead. For example, Intel's APIs use `char` for signed 8-bit
156
- integers, but `char` on ARM is generally unsigned. SIMDe uses `int8_t`
157
- to make the API portable, but that means your code may require some
158
- minor changes (such as using `int8_t` instead of `char`) to work on
159
- other platforms.
160
-
161
- That said, the changes are usually quite minor. It's often enough to
162
- just use search and replace, manual changes are required pretty
163
- infrequently.
164
-
165
- For best performance, in addition to `-O3` (or whatever your compiler's
166
- equivalent is), you should enable OpenMP 4 SIMD support by defining
167
- `SIMDE_ENABLE_OPENMP` before including any SIMDe headers, and
168
- enabling OpenMP support in your compiler. GCC and ICC both support a
169
- flag to enable only OpenMP SIMD support instead of full OpenMP (the OpenMP
170
- SIMD support doesn't require the OpenMP run-time library); for GCC the
171
- flag is `-fopenmp-simd`, for ICC `-qopenmp-simd`. SIMDe also supports
172
- using [Cilk Plus](https://www.cilkplus.org/), [GCC loop-specific
173
- pragmas](https://gcc.gnu.org/onlinedocs/gcc/Loop-Specific-Pragmas.html),
174
- or [clang pragma loop hint
175
- directives](http://llvm.org/docs/Vectorizers.html#pragma-loop-hint-directives),
176
- though these are not nearly as effective as OpenMP SIMD and depending
177
- on them will likely result in less efficient code.
178
-
179
- ## Portability
180
-
181
- ### Compilers
182
-
183
- SIMDe does depend on some C99 features, though the subset supported by
184
- MSVC also works. While we do our best to make sure we provide optimized
185
- implementations where they are supported, SIMDe does contain portable
186
- fallbacks which are designed to work on any C99 compiler.
187
-
188
- Every commit is tested in CI on multiple compilers, platforms, and
189
- configurations, and our test coverage is extremely extensive.
190
- Currently tested compilers include:
191
-
192
- * GCC versions back to 4.8
193
- * Clang versions back to 7
194
- * Microsoft Visual Studio back to 12 (2013)
195
- * IBM XL C/C++
196
- * Intel C/C++ Compiler (ICC)
197
- * PGI C Compiler
198
-
199
- I'm generally willing to accept patches to add support for other
200
- compilers, as long as they're not too disruptive, *especially* if we
201
- can get CI support going. We currently use Travis CI, AppVeyor, and
202
- Microsoft Azure Pipelines, but other CI platforms can be added as
203
- necessary.
204
-
205
- ### Hardware
206
-
207
- The following architectures are tested in CI for every commit:
208
-
209
- * x86_64
210
- * x86
211
- * AArch64
212
- * ARMv8
213
- * ARMv7
214
- * PPC64
215
- * MIPS
216
-
217
- We would love to add more, so patches are extremely welcome!
218
-
219
- The tests currently contain some assumptions that they are running on
220
- a little-endian CPU. We're working on this, but for now big endian
221
- CPUs *should* work, but we can't promise.
222
-
223
- ## Related Projects
224
-
225
- * The "builtins" module in
226
- [portable-snippets](https://github.com/nemequ/portable-snippets)
227
- does much the same thing, but for compiler-specific intrinsics
228
- (think `__builtin_clz` and `_BitScanForward`), **not** SIMD
229
- intrinsics.
230
- * Intel offers an emulator, the [Intel® Software Development
231
- Emulator](https://software.intel.com/en-us/articles/intel-software-development-emulator/)
232
- which can be used to develop software which uses Intel intrinsics
233
- without having to own hardware which supports them, though it
234
- doesn't help for deployment.
235
- * [Iris](https://github.com/AlexYaruki/iris) is the only other project
236
- I'm aware of which is attempting to create portable implementations
237
- like SIMDe. SIMDe is much further along on the Intel side, but Iris
238
- looks to be in better shape on ARM. C++-only, Apache 2.0 license.
239
- AFAICT there are no accelerated fallbacks, nor is there a good way to
240
- add them since it relies extensively on templates.
241
- * There are a few projects trying to implement one set with another:
242
- * [ARM_NEON_2_x86_SSE](https://github.com/intel/ARM_NEON_2_x86_SSE)
243
- — implementing NEON using SSE. Quite extensive, Apache 2.0
244
- license.
245
- * [sse2neon](https://github.com/jratcliff63367/sse2neon) —
246
- implementing SSE using NEON. This code has already been merged
247
- into SIMDe.
248
- * [veclib](https://github.com/IvantheDugtrio/veclib) — implementing
249
- SSE2 using AltiVec/VMX, using a non-free IBM library called
250
- [powerveclib](https://www.ibm.com/developerworks/community/groups/community/powerveclib/)
251
- * [SSE-to-NEON](https://github.com/otim/SSE-to-NEON) — implementing
252
- SSE with NEON. Non-free, C++.
253
- * [arm-neon-tests](https://github.com/christophe-lyon/arm-neon-tests)
254
- contains tests te verify NEON implementations.
255
-
256
- If you know of any other related projects, please [let us
257
- know](https://github.com/nemequ/simde/issues/new)!
258
-
259
- ## Caveats
260
-
261
- Sometime features can't be emulated. If SIMDe is operating in native
262
- mode the functions will work as expected, but if there is no native
263
- support some caveats apply:
264
-
265
- * Many functions require <math.h> and/or <fenv.h>. SIMDe will still
266
- work without those headers, but the results of those functions are
267
- undefined.
268
- * x86 / x86_64
269
- * SSE
270
- * `SIMDE_MM_SET_ROUNDING_MODE()` will use `fesetround()`, altering
271
- the global rounding mode.
272
- * `simde_mm_getcsr` and `simde_mm_setcsr` only implement bits 13
273
- and 14 (rounding mode).
274
- * AVX
275
- * `simde_mm256_test*` do not set the CF/ZF registers as there is
276
- no portable way to implement that functionality.
277
- * `simde_mm256_zeroall` and `simde_mm256_zeroupper` are not
278
- implemented as there is no portable way to implement that
279
- functionality.
280
-
281
- Additionally, there are some known limitations which apply when using
282
- native aliases (`SIMDE_ENABLE_NATIVE_ALIASES`):
283
-
284
- * On Windows x86 (but not x86_64), some MMX functions and SSE/SSE2
285
- functions which use MMX types (__m64) other than for pointers may
286
- return incorrect results.
287
-
288
- Also, as mentioned earlier, while some APIs make assumptions about
289
- basic types (*e.g.*, `int` is 32 bits), SIMDe does not, so many types
290
- have been altered to use portable fixed-width versions such as
291
- `int32_t`.
292
-
293
- If you find any other differences, please file an issue so we can either fix
294
- it or add it to the list above.
295
-
296
- ## Benefactors
297
-
298
- SIMDe uses resources provided for free by a number of organizations.
299
- While this shouldn't be taken to imply endorsement of SIMDe, we're
300
- tremendously grateful for their support:
301
-
302
- * [GitHub](https://github.com/) — hosts our source repository, issue
303
- tracker, etc.
304
- * [Travis CI](https://travis-ci.org/) — provides CI testing on
305
- numerous platforms.
306
- * [AppVeyor](https://www.appveyor.com/) — provides CI testing on
307
- Windows.
308
- * [Drone CI](https://drone.io/) — provides CI testing on ARM 32 bits
309
- platform, etc.
310
- * [IntegriCloud](https://integricloud.com/) — provides access to a very
311
- fast POWER9 server for developing AltiVec/VMX support.
312
- * [GCC Compile Farm](https://gcc.gnu.org/wiki/CompileFarm) — provides
313
- access to a wide range of machines with different architectures for
314
- developing support for various ISA extensions.
315
- * [CodeCov.io](https://codecov.io/) — provides code coverage analysis
316
- for our test cases.
317
-
318
- Without such organizations donating resources, SIMDe wouldn't be nearly
319
- as useful or usable as it is today.
320
-
321
- We would also like to thank anyone who has helped develop the myriad
322
- of software on which SIMDe relies, including compilers and analysis
323
- tools.
324
-
325
- Finally, a special thank you to
326
- [anyone who has contributed](https://github.com/nemequ/simde/graphs/contributors)
327
- to SIMDe, filed bugs, provided suggestions, or helped with SIMDe
328
- development in any way.
329
-
330
- ## License
331
-
332
- SIMDe is distributed under an MIT-style license; see COPYING for
333
- details.