minimap2 0.2.25.1 → 0.2.25.2

Sign up to get free protection for your applications and to get access to all the features.
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.