summaryrefslogtreecommitdiff
path: root/README.html
blob: e4b75e6386f59897a2336346c0c8aa37151c214c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<!DOCTYPE html>
<html>
	<h1>rgo</h1>
	<p>rgo (<b>R</b>untime-al<b>GO</b>rithmic, pronounced as <i>are-go</i>) is a C/C++ library for runtime algorithmics on memory sequences.</p>
	<p>rgo, by default, implements it's algorithms in C. On some platforms (see section <i>Supported Platforms</i>), we implement them in assembly instead. This is to ensure that architecture features (such as SIMD) are used to make the algorithms as efficient as possible.</p>
	<p><i>Note: This library is still in it's early stages and is NOT anywhere near being fully optimised.</i></p>
	<br />
	<h2>Supported Platforms</h2>
	<p>rgo is written in C except on some platforms where we have implemented the algorithms in assembly instead.</p>
	<p>Our implementations are only compatbile with System V-based operating systems. Support for Windows in a future release is being reflected.</p>
	<p>Currently, we have only implemented algorithms in assembly for the following architectures:</p>
	<ul>
		<li>
			<p>AMD64, including AVX;</p>
		</li>
		<li>
			<p>IA-32, including SSE and AVX;</p>
		</li>
		<li>
			<p><i>(Planned) Aarch64, including Neon and SVE;</i></p>
		</li>
		<li>
			<p><i>(Planned) Motorola 68000;</i></p>
		</li>
		<li>
			<p><i>(Planned) Power ISA, including AltiVec;</i></p>
		</li>
		<li>
			<p><i>(Planned) RISC-V;</i></p>
		</li>
		<li>
			<p><i>(Planned) Sparc;</i></p>
		</li>
	</ul>
	<p>They have been implemented using the GNU C extension for inline assembly, meaning a supporting compiler is required (such as Clang, GCC, and ICC).</p>
	<br />
	<h2>Building</h2>
	<p>The provided makefile has been tested to work with GNU make and BSD make and should work with other make implementations.</p>
	<p>The target <i>rgo</i> builds the static library file (located at <i>rgo/librgo.a</i>). The target <i>clean</i> removes all object files, whilst <i>purge</i> removes all object files and the static library file.</p>
	<p>Instructions for building the test program may be found on the first line of <i>test.c</i>.</p>
	<br />
	<h2>Copyright and License</h2>
	<p>Copyright 2022 Gabriel Jensen.</p>
	<p>This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.</p>
	<p>If a copy of the MPL was not distributed with this file, You can obtain one at <i>https://mozilla.org/MPL/2.0/</i>.</p>
</html>