Commit Graph

247 Commits (master)

Author SHA1 Message Date
Ondřej Nový 4b2d6a7720 Fixed VCS URLs (https). 2016-02-28 15:25:30 +01:00
animetosho 643743d048 Move conditional outside loop for NEON SPLIT4 implementation
Seems to improve performance a fair bit
2015-11-14 16:32:25 +10:00
animetosho 05057e5635 Eliminate unnecessary VTRNs in SPLIT(16,4) NEON implementation
Also makes the ARMv8 version consistent with the older one, in terms of processing width
2015-11-12 22:17:53 +10:00
animetosho 438283c12d Use similar strategy for SPLIT(16,4) ALTMAP NEON implementation as SPLIT(32,4) 2015-11-12 21:17:13 +10:00
animetosho f373b138aa Initial fix for SPLIT(16,4) ALTMAP NEON (non ARMv8) 2015-11-12 21:09:44 +10:00
animetosho 7a9a09f32c CARRY_FREE is currently only available for w=4 and w=8 on NEON 2015-11-12 21:06:34 +10:00
animetosho 9f9f005a3f Fix a number of conversion issues in the HTML manual 2015-11-02 18:19:12 +10:00
Thomas Goirand 54189a183a Changed the section of gf-complete-tools from libs to math. 2015-09-20 13:38:34 +00:00
Thomas Goirand 08c77847e7 Fixed gbp.conf 2015-09-20 13:34:11 +00:00
Thomas Goirand 30528bf580 Also build a libgf-complete1-sse package, which contains the optimized version of the library. 2015-09-20 15:29:58 +02:00
James Page ba127b4a1d releasing package gf-complete version 1.0.2-2 2015-09-17 12:17:12 +01:00
James Page a1fec3cca1 Revert "Now also building a version of the .so with SSE support."
This reverts commit 6c3d8e552e.
2015-09-17 12:03:04 +01:00
James Page 9d2f712c43 Resync with Ubuntu 2015-09-16 12:18:37 +01:00
KMG 363da20723 Merge branch 'wip-manual' into 'master'
convert manual from PDF to HTML

See merge request !11
2015-09-04 01:23:27 +00:00
Loic Dachary d1b6bbf706 add -Wsign-compare and address the warnings
* (1 << w) are changed into ((uint32_t)1 << w)
* int are changed into uint32_t

gf.c: gf_composite_get_default_poly:

   a larger unsigned were assigned to unsigned integers in which case
   the type of the assigned variable is changed to be the same as the
   value assigned to it.

gf_w16.c: GF_MULTBY_TWO

   setting the parameter to a variable instead of passing the expression
   resolves the warning for some reason.

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-09-02 19:20:33 +02:00
Loic Dachary 284a97a0d9 ignore test-driver file
Ignore it because it is rebuild by autogen.sh

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-09-02 19:02:40 +02:00
Loic Dachary af22f913ed Merge branch 'wip-da-SCA-coverity' into 'master'
Fix issues found by Coverity in the Ceph project

Remove dead code and fix potential integer overflow issues

See merge request !12
2015-09-02 16:05:33 +00:00
Thomas Goirand 6c3d8e552e Now also building a version of the .so with SSE support. 2015-08-11 15:51:13 +02:00
Danny Al-Gaaf 2f6db512fb gf_w64.c: fix integer overflow
Fix for Coverity issue (from Ceph):

CID 1193089 (#1 of 1): Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN)
 overflow_before_widen: Potentially overflowing expression 1 << g_r with type
 int (32 bits, signed) is evaluated using 32-bit arithmetic, and then used in
 a context that expects an expression of type uint64_t (64 bits, unsigned).

CID 1193090 (#1 of 1): Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN)
 overflow_before_widen: Potentially overflowing expression 1 << g_s with type
 int (32 bits, signed) is evaluated using 32-bit arithmetic, and then used in
 a context that expects an expression of type uint64_t (64 bits, unsigned).

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
2015-06-18 09:01:37 +02:00
Danny Al-Gaaf 1aef8694bc gf_w64.c: fix integer overflow
Fix for Coverity issue (from Ceph):

CID 1193088 (#1 of 1): Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN)
 overflow_before_widen: Potentially overflowing expression 1 << g_s with type
 int (32 bits, signed) is evaluated using 32-bit arithmetic, and then used in
 a context that expects an expression of type uint64_t (64 bits, unsigned).

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
2015-06-18 09:00:03 +02:00
Danny Al-Gaaf e127bb1fb9 gf_w64.c: fix integer overflow
Fix for Coverity issue (from Ceph):

CID 1193087 (#1 of 1): Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN)
 overflow_before_widen: Potentially overflowing expression 1 << g_r with type
  int (32 bits, signed) is evaluated using 32-bit arithmetic, and then used
  in a context that expects an expression of type uint64_t (64 bits, unsigned).

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
2015-06-18 08:58:20 +02:00
Danny Al-Gaaf 98e5e37159 gf_w64.c: fix integer overflow
Fix for Coverity issue (from Ceph):

CID 1193086 (#1 of 1): Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN)
 overflow_before_widen: Potentially overflowing expression 1 << g_r with type
  int (32 bits, signed) is evaluated using 32-bit arithmetic, and then used in
  a context that expects an expression of type uint64_t (64 bits, unsigned).

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
2015-06-18 08:55:49 +02:00
Danny Al-Gaaf 7972291e1f src/gf_w128.c: remove dead code and unused variable
Fix for Coverity issue:

CID 1297812 (#1 of 1): Constant variable guards dead code (DEADCODE)
 dead_error_begin: Execution cannot reach this statement: fprintf(stderr,
  "Code conta....
 Local variable no_default_flag is assigned only once, to a constant
  value, making it effectively constant throughout its scope. If this
  is not the intent, examine the logic to see if there is a missing
  assignment that would make no_default_flag not remain constant.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
2015-06-17 10:46:44 +02:00
Danny Al-Gaaf da671b4908 src/gf_w64.c: remove dead code
Fix for Coverity issue:

CID 1297852 (#1 of 1): 'Constant'; variable guards dead code (DEADCODE)
 dead_error_begin: Execution cannot reach this statement:
  fprintf(stderr, "Code conta....
 Local variable no_default_flag is assigned only once, to a constant value,
  making it effectively constant throughout its scope. If this is not the
  intent, examine the logic to see if there is a missing assignment that
  would make no_default_flag not remain constant.

Signed-off-by: Danny Al-Gaaf <danny.al-gaaf@bisect.de>
2015-06-17 10:46:21 +02:00
Loic Dachary 547f67ec98 manual: convert from PDF to HTML
It makes it easier to update.

Signed-off-by: Loic Dachary <loic@dachary.org>
2015-01-14 16:15:27 +01:00
KMG 5f31e2719d Merge branch 'wip-documentation' into 'master'
jerasure.org is http, not https

See merge request !4
2015-01-08 14:59:07 +00:00
Loic Dachary 15ce8650c7 jerasure.org is http, not https
Signed-off-by: Loic Dachary <loic@dachary.org>
2014-12-29 15:16:31 +01:00
KMG dd5389542e Merge branch 'wip-dirstamp-ignore' into 'master'
dirstamp ignore

See merge request !1
2014-12-29 03:27:23 +00:00
KMG 9a652166c4 Merge branch 'wip-exit-v2' into 'master'
exit v2

See merge request !2
2014-12-29 03:27:02 +00:00
KMG 695d83ea59 Merge branch 'wip-documentation' into 'master'
documentation

updates to replace URLs that do not contain useful information

See merge request !3
2014-12-29 03:26:44 +00:00
Loic Dachary 58eebabd20 documentation: update with jerasure.org new home
Signed-off-by: Loic Dachary <loic@dachary.org>
2014-12-25 11:55:49 +01:00
Loic Dachary cbbf35b6d2 Revert "Removed PDF from the repo and added a note in the README that describes how to"
This reverts commit 9311b4fc10.
2014-12-25 11:51:38 +01:00
Greg Farnum 79f34a1b46 gitignore: add src/.dirstamp
Signed-off-by: Greg Farnum <gfarnum@redhat.com>
2014-12-25 00:56:32 +01:00
Loic Dachary e7131cfd85 use assert(0) instead of exit(1)
When a fatal error (unaligned memory etc.) is detected, gf-complete should
assert(3) instead of exit(3) to give a chance to the calling program to
catch the exception and display a stack trace. Although it is possible
for gdb to display the stack trace and break on exit, libraries are not
usually expected to terminate the calling program in this way.

Signed-off-by: Loic Dachary <loic@dachary.org>
(cherry picked from commit 29427efac2)
2014-12-15 13:47:47 +01:00
kmgreen2 e0e400aaf6 Merge pull request #1 from dachary/wip-assert
use assert(0) instead of exit(1)
2014-12-06 08:09:55 -08:00
Loic Dachary 29427efac2 use assert(0) instead of exit(1)
When a fatal error (unaligned memory etc.) is detected, gf-complete should
assert(3) instead of exit(3) to give a chance to the calling program to
catch the exception and display a stack trace. Although it is possible
for gdb to display the stack trace and break on exit, libraries are not
usually expected to terminate the calling program in this way.

Signed-off-by: Loic Dachary <loic@dachary.org>
2014-12-02 00:27:27 +01:00
Kevin Greenan 70dd94ae38 Merged in jannau/gf-complete/neon (pull request #25)
arm neon optimisations
2014-10-24 14:19:31 -07:00
Janne Grunau 6fdd8bc3d3 arm: NEON optimisations for gf_w64
Optimisations for 4,64 split table region multiplications. Only used on
ARMv8-A since it is not faster on ARMv7-A.
2014-10-24 14:54:55 +02:00
Janne Grunau 370c88b901 arm: NEON optimisations for gf_w32
Optimisations for 4,32 split table multiplications.

Selected time_tool.sh results on a 1.7 GHz cortex-a9:
Region Best (MB/s):   346.67   W-Method: 32 -m SPLIT 32 4 -r SIMD -
Region Best (MB/s):    92.89   W-Method: 32 -m SPLIT 32 4 -r NOSIMD -
Region Best (MB/s):   258.17   W-Method: 32 -m SPLIT 32 4 -r SIMD -r ALTMAP -
Region Best (MB/s):   162.00   W-Method: 32 -m SPLIT 32 8 -
Region Best (MB/s):   160.53   W-Method: 32 -m SPLIT 8 8 -
Region Best (MB/s):    32.74   W-Method: 32 -m COMPOSITE 2 - -
Region Best (MB/s):   199.79   W-Method: 32 -m COMPOSITE 2 - -r ALTMAP -
2014-10-24 14:54:27 +02:00
Janne Grunau 474010a91d arm: NEON optimisations for gf_w16
Optimisations for the 4,16 split table region multiplications.

Selected time_tool.sh 16 -A -B results for a 1.7 GHz cortex-a9:
Region Best (MB/s):   532.14   W-Method: 16 -m SPLIT 16 4 -r SIMD -
Region Best (MB/s):   212.34   W-Method: 16 -m SPLIT 16 4 -r NOSIMD -
Region Best (MB/s):   801.36   W-Method: 16 -m SPLIT 16 4 -r SIMD -r ALTMAP -
Region Best (MB/s):    93.20   W-Method: 16 -m SPLIT 16 4 -r NOSIMD -r ALTMAP -
Region Best (MB/s):   273.99   W-Method: 16 -m SPLIT 16 8 -
Region Best (MB/s):   270.81   W-Method: 16 -m SPLIT 8 8 -
Region Best (MB/s):    70.42   W-Method: 16 -m COMPOSITE 2 - -
Region Best (MB/s):   393.54   W-Method: 16 -m COMPOSITE 2 - -r ALTMAP -
2014-10-24 14:53:57 +02:00
Janne Grunau bec15359de arm: NEON optimisations for gf_w8
Optimisations for the 4,4 split table region multiplication and carry
less multiplication using NEON's polynomial long multiplication.
arm: w8: NEON carry less multiplication

Selected time_tool.sh results for a 1.7GHz cortex-a9:
Region Best (MB/s):   375.86   W-Method: 8 -m CARRY_FREE -
Region Best (MB/s):   142.94   W-Method: 8 -m TABLE -
Region Best (MB/s):   225.01   W-Method: 8 -m TABLE -r DOUBLE -
Region Best (MB/s):   211.23   W-Method: 8 -m TABLE -r DOUBLE -r LAZY -
Region Best (MB/s):   160.09   W-Method: 8 -m LOG -
Region Best (MB/s):   123.61   W-Method: 8 -m LOG_ZERO -
Region Best (MB/s):   123.85   W-Method: 8 -m LOG_ZERO_EXT -
Region Best (MB/s):  1183.79   W-Method: 8 -m SPLIT 8 4 -r SIMD -
Region Best (MB/s):   177.68   W-Method: 8 -m SPLIT 8 4 -r NOSIMD -
Region Best (MB/s):    87.85   W-Method: 8 -m COMPOSITE 2 - -
Region Best (MB/s):   428.59   W-Method: 8 -m COMPOSITE 2 - -r ALTMAP -
2014-10-24 14:53:35 +02:00
Janne Grunau 1311a44f7a arm: NEON optimisations for gf_w4
Optimisations for the single table region multiplication and carry less
multiplication using NEON's polynomial multiplication of 8-bit values.

The single polynomial multiplication is not that useful but vector
version is for region multiplication.

Selected time_tool.sh results for a 1.7GHz cortex-a9:
Region Best (MB/s):   672.72   W-Method: 4 -m CARRY_FREE -
Region Best (MB/s):   265.84   W-Method: 4 -m BYTWO_p -
Region Best (MB/s):   329.41   W-Method: 4 -m TABLE -r DOUBLE -
Region Best (MB/s):   278.63   W-Method: 4 -m TABLE -r QUAD -
Region Best (MB/s):   329.81   W-Method: 4 -m TABLE -r QUAD -r LAZY -
Region Best (MB/s):  1318.03   W-Method: 4 -m TABLE -r SIMD -
Region Best (MB/s):   165.15   W-Method: 4 -m TABLE -r NOSIMD -
Region Best (MB/s):    99.73   W-Method: 4 -m LOG -
2014-10-24 14:53:12 +02:00
Janne Grunau 3a1be40ea8 arm: NEON optimisations for XOR in gf_multby_one 2014-10-09 23:25:36 +02:00
Janne Grunau 36e75c3efe use posix_memalign to align memory for SIMD region tests
Properly emulate aligned allocation if posix_memalign is not available.
2014-10-09 23:22:34 +02:00
Janne Grunau eb5ce0ca42 configure: add ARM/AArch64 NEON support
Checks for arm_neon.h header.
2014-10-09 23:22:33 +02:00
Janne Grunau 568df90edc simd: rename the region flags from SSE to SIMD
SSE is not the only supported SIMD instruction set. Keep the old names
for backward compatibility.
2014-10-09 23:22:32 +02:00
Janne Grunau 2a2f1e306f check: split unit tests and support paralell execution 2014-10-09 23:22:29 +02:00
Janne Grunau f6828cfbc1 build: fix out of source tree build 2014-10-09 23:22:28 +02:00
Janne Grunau d315d20d56 build: make CFLAGS user setable
There is no need to force the non-default CFLAGS on users trying to set
them via enviroment variable or on configure command.
2014-10-09 23:19:28 +02:00
Kevin Greenan 62d4b81a83 Merged in dachary/gf-complete/wip-static-code-analysis (pull request #24)
static code analysis fixes
2014-10-03 08:55:35 -07:00