Skip to content
Commits on Source (2)
2019-05-12 twu
* gmap.c: Adding support for avx512bw
* gsnap_select.c, gsnapl_select.c: Adding support for avx512bw
* gsnap.c: Changed default parameter for --max-mismatches for DNA-seq
* cpuid.c, cpuid.h, gmap_select.c, gmapl_select.c: Adding support for
avx512bw
* Makefile.gsnaptoo.am: Adding programs for avx512bw
* configure.ac: Adding option for AVX512BW SIMD
* ax_cpuid_intel.m4, ax_cpuid_non_intel.m4: Adding test for AVX512BW support
* ax_ext.m4: Adding commands for AVX512BW
* univdiagpool.c: Adding assertions
* substring.c: Checking against substrings on the wrong chromosome
* stage1hr.c: Commenting out extended algorithm, which can cause problems
with repetitive reads
* output.c: Consider excessive output to be a fail for the purpose of the
--nofails flag.
* merge-uint8.c: Fixed SIMD command for AVX512 machines
2019-03-25 twu
* extension-search.c, extension-search.h: Implemented extension of elt sets
in the opposite direction
2019-03-19 twu
* segment-search.c: For alignments straddling a chromosome, recomputing
querypos and queryend to cover the new chromosome
* gsnap.c: Using new interface for Path_solve_setup
* path-solve.h: New interface for Path_solve_setup
* path-solve.c: Not allowing splices on circular chromosomes
* concordance.c: Using field sensedir_for_concordance
* stage3hr.c, stage3hrdef.h: Now using fields sensedir_for_concordance and
sensedir
* samprint.c: Removed references to Stage3end_sensedir_distant_guess
2019-03-16 twu
* Makefile.gsnaptoo.am, VERSION, config.site.rescomp.tst, distant-dna.c,
distant-dna.h, distant-rna.c, distant-rna.h, gsnap.c, index.html,
method.c, method.h, output.c, path-solve.c, samprint.c, samprint.h,
splice.c, splice.h, src, stage1hr.c, stage3hr.c, stage3hr.h,
stage3hrdef.h, substring.c, substring.h, terminal.c, trunk: Merged
revisions 218560 through 218674 from branches/2019-03-07-distant-dna to
implement distant splicing and to fix some bugs in spliced alignments
* genome128_hr.c: Added comment
2019-03-07 twu
* distant-dna.h: Initial import
* distant-dna.c: Initial import
2019-03-05 twu
* gsnap.c: Added option --use-local-hash
* VERSION, config.site.rescomp.tst, src, trunk: Updated for latest version
2019-03-04 twu
* localdb.c, localdb.h, path-solve.c: Merged revisions 218528 and 218529
from branches/2019-03-04-fix-repetitive to limit recursive procedures
* stage3hr.c: Fixed debugging statements
* stage1hr.c: Added debugging statements
* segment-search.c: Fixed debugging statement
* kmer-search.c: Added debugging statements
* gsnap.c: Removed variables relating to stage2 suboptimal alignments
2019-03-02 twu
* path-solve.c: For compute_qstart_paths and compute_qend_paths, added a
max_depth criterion, and checking for repetitive positions
* stage3hr.c: Checking nmismatches when we are checking all assertions
* path-solve.c: Revising qstart of middle segment if an insertion is
present. Revised code for computing ninserts
2019-03-01 twu
* path-solve.c: Fixed addition of alts substring to best path from
all_child_paths, rather than to path
2019-02-27 twu
* VERSION, config.site.rescomp.prd, index.html: Updated for latest version
* substring.c: In trimming at ends without splicing, extending to the end if
nmismatches is 0
* stage3hr.c: For score_within_trims, adding a penalty for long ambiguous
ends
* substring.c: Restored previous algorithm for computing trim at ends with
no splice. For alts with good splice probability, counting substring as
nmatches rather than amb. For alts with poor splice probability, counting
substring as amb.
2019-02-25 twu
* path-solve.c: Fixed cases in compute_qstart_paths and compute_qend_paths
where terminalp was not being set
2019-02-22 twu
* concordance.c, concordance.h, config.site.rescomp.prd,
config.site.rescomp.tst, distant-rna.c, distant-rna.h, extension-search.c,
extension-search.h, genome128_hr.c, gsnap.c, kmer-search.c, kmer-search.h,
ladder.c, path-solve.c, path-solve.h, resulthr.c, segment-search.c,
segment-search.h, src, stage1hr.c, stage3hr.c, stage3hr.h, stage3hrdef.h,
substring.c, substring.h, terminal.c, terminal.h, trunk: Merged revisions
218419 through 218472 from branches/2019-02-19-restore-fusions
* index.html: Updated for latest version
2019-02-19 twu
* stage1hr.c: Using user_maxlevel_float for final filtering, and not for
searching
* concordance.c: Using score_ignore_trim instead of score_posttrim
* gsnap.c: Added option for --ignore-trim-in-filtering
* stage3hrdef.h: Changed field score_posttrim to score_ignore_trim
* stage3hr.c, stage3hr.h: Changed Stage3hr_filter_coverage to
Stage3hr_filter, which accounts for number of mismatches. Added parameter
ignore_trim_p. Changed score_posttrim to score_ignore_trim, and computing
this to be lower than score
* terminal.c: Using Univ_IIT_get_chrnum and new interface to Substring_new
* substring.c, substring.h: Substring_new now assumes that chrnum was set
correctly
* stage3hr.c: Using new interface to Substring_new
* stage1hr.c: Using new interface to Segment_identify procedures
* segment-search.c, segment-search.h: Handling alignments straddling more
than two chromosomes. Removed plusp as a parameter
* kmer-search.c: Using Univ_IIT_get_chrnum. Using new interface to
Substring_new
* iit-read-univ.c, iit-read-univ.h: Implemented Univ_IIT_update_chrnum and
Univ_IIT_get_chrnum
* extension-search.c: Calling Univ_IIT_update_chrnum to set chrnum
2019-02-18 twu
* stage3hr.c: If qend <= qstart, do not calculate number of nmismatches,
which is not defined. For nmatches, do not penalize for indels
* substring.c: If trimming changes querystart or queryend, recalculate
nmismatches
2019-02-16 twu
* stage1hr.c: Skipping alignment when querylength is less than index1part +
index1interval - 1
* segment-search.c: When advancing chrnum for straddled alignments, checking
that we do not go past the last chromosome
2019-02-15 twu
* VERSION: Updated version number
* indexdb-write.c: Added code for comparing counts with compression and
counts without compression
* bitpack64-write.c, bitpack64-write.h: For huge genomes, using an array of
UINT8 for calculations of genome position. Printing strerror for
file-related errors.
* substring.c: For circular chromosomes, checking if the entire substring
resides in the next chromosome and returning the circularpos at that query
position
* segment-search.c: When a straddle calls for advancing to a later
chromosome, using local data structures instead of mixing them with a call
to Univ_IIT_get_one
* path-solve.c: Using subtract_bounded to subtract the local1part amount
* localdb.c: In Localdb_get_diagonals, checking for low < high, since low ==
high can occur when a substring is at the beginning or end of a chromosome
* cigar.c: Checking for an initial M to be printed before printing any indel
or splice
2019-02-13 twu
* intersect-large.c, intersect.c: No longer initializing last_diagonal to be
0, and comparing against it, which fails if a diagonal is 0. Instead,
checking explicitly for the first case
2019-01-31 twu
* gsnap.c, path-solve.c, path-solve.h, segment-search.c, segment-search.h,
stage1hr.c, stage1hr.h, stage3hr.c, stage3hr.h: Removed GMAP parameters
from GSNAP code
* VERSION, archive.html, config.site.rescomp.prd, index.html: Updated for
latest version
* intersect-large.c, intersect.c: In Intersect_approx_lower and
Intersect_approx_higher, ignoring duplicates of diagonals0, in order to
ensure that the result is in ascending order
* substring.c: Using plusp in interpreting mandatory_trim_querystart and
mandatory_trim_queryend
* path-solve.c: When a mismatch extends a diagonal, computing the number of
mismatches at that time
* merge-diagonals-simd-uint4.c: Added code for checking that inputs are in
ascending order
* stage3hr.c: Improved tradeoffs between nmatches, nmatches_posttrim, splice
score, nsegments, insertlength, and outerlength in Stage3end_optimal_score
and Stage3pair_optimal_score_final
* extension-search.c, segment-search.c: Handling the case where the middle
or anchor diagonal straddles two chromosomes
2019-01-23 twu
 
* Makefile.gsnaptoo.am, VERSION, changepoint.h, compress.c, concordance.h,
......
2019-01-24
\ No newline at end of file
2019-05-12
\ No newline at end of file
......@@ -46,7 +46,7 @@ AC_LANG_PUSH([C])
ax_cv_cpu_has_avx2_ext=yes],
[AC_MSG_RESULT(no)])
# Test for AVX512 support
# Test for AVX512 (F and CD) support
AC_MSG_CHECKING(for avx512 support)
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[#include <immintrin.h>]],
......@@ -55,6 +55,15 @@ AC_LANG_PUSH([C])
ax_cv_cpu_has_avx512_ext=yes],
[AC_MSG_RESULT(no)])
# Test for AVX512BW and VL support (not in Knights Landing or Knights Mill)
AC_MSG_CHECKING(for avx512bw and avx512vl support)
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[#include <immintrin.h>]],
[[return _may_i_use_cpu_feature(_FEATURE_AVX512BW | _FEATURE_AVX512VL) ? 0 : 9;]])],
[AC_MSG_RESULT(yes)
ax_cv_cpu_has_avx512bw_ext=yes],
[AC_MSG_RESULT(no)])
AC_LANG_POP([C])
])
......@@ -153,7 +153,7 @@ static void run_cpuid (uint32_t eax, uint32_t ecx, uint32_t *abcd) {
[AC_MSG_RESULT(no)])
# Test for AVX512 support
# Test for AVX512 (F and CD) support
AC_MSG_CHECKING(for avx512 support)
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[#include <stdint.h>
......@@ -175,7 +175,7 @@ static int check_xcr0_zmm () {
} else if (!check_xcr0_zmm()) {
return 8;
} else if ((abcd[/*EBX*/1] & avx512_mask) != avx512_mask) {
return 0; /* Should fail here, but book/Web examples skip */
return 0; /* Should be false here, but book/Web examples skip this test */
} else {
return 0;
}]])],
......@@ -183,5 +183,37 @@ static int check_xcr0_zmm () {
ax_cv_cpu_has_avx512_ext=yes],
[AC_MSG_RESULT(no)])
# Test for AVX512BW and VL support
AC_MSG_CHECKING(for avx512bw and avx512vl support)
AC_RUN_IFELSE(
[AC_LANG_PROGRAM([[#include <stdint.h>
static void run_cpuid (uint32_t eax, uint32_t ecx, uint32_t *abcd) {
uint32_t ebx, edx;
__asm__ ("cpuid" : "+b" (ebx), "+a" (eax), "+c" (ecx), "=d" (edx));
abcd[0] = eax; abcd[1] = ebx; abcd[2] = ecx; abcd[3] = edx;}
static int check_xcr0_zmm () {
uint32_t xcr0;
uint32_t zmm_ymm_xmm = ((7 << 5) | (1 << 2) | (1 << 1));
__asm__ ("xgetbv" : "=a" (xcr0) : "c" (0) : "%edx");
return ((xcr0 & zmm_ymm_xmm) == zmm_ymm_xmm);}]],
[[uint32_t abcd[4];
uint32_t osxsave_mask = (1 << 27);
uint32_t avx512bw_vl_mask = (/*512BW*/(1 << 30) | /*512VL*/(1 << 31));
run_cpuid(1, 0, abcd);
if ((abcd[/*ECX*/2] & osxsave_mask) != osxsave_mask) {
return 9;
} else if (!check_xcr0_zmm()) {
return 8;
} else if ((abcd[/*EBX*/1] & avx512bw_vl_mask) != avx512bw_vl_mask) {
return 9;
} else {
return 0;
}]])],
[AC_MSG_RESULT(yes)
ax_cv_cpu_has_avx512bw_ext=yes],
[AC_MSG_RESULT(no)])
AC_LANG_POP([C])
])
......@@ -21,6 +21,7 @@
#
# HAVE_MMX / HAVE_SSE / HAVE_SSE2 / HAVE_SSE3 / HAVE_SSSE3 / HAVE_SSE4_1 / HAVE_SSE4_2 / HAVE_AVX
#
#
# LICENSE
#
# Copyright (c) 2007 Christophe Tournayre <turn3r@users.sourceforge.net>
......@@ -342,8 +343,10 @@ AC_DEFUN([AX_EXT],
CFLAGS=
if test x"$ax_cv_c_compiler_vendor" = xintel; then
TEST_CFLAGS="-xCOMMON-AVX512"
elif test x"$ax_cv_cpu_has_avx512bw_ext" != xyes; then
TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd -mno-avx512bw -mno-avx512vl"
else
TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd"
TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd -mavx512bw -mavx512vl"
fi
AX_CHECK_COMPILE_FLAG([$TEST_CFLAGS], [ax_cv_compile_avx512_ext=yes], [ax_cv_ext_compile_problem=yes])
if test x"$ax_cv_compile_avx512_ext" != xyes; then
......@@ -368,6 +371,8 @@ AC_DEFUN([AX_EXT],
SIMD_SSE4_2_CFLAGS="$SIMD_SSE4_2_CFLAGS -mno-avx512f -mno-avx512cd"
SIMD_AVX2_CFLAGS="$SIMD_AVX2_CFLAGS -mno-avx512f -mno-avx512cd"
fi
# AC_DEFINE(HAVE_AVX512,1,[Define to 1 if you support AVX512 (Advanced Vector Extensions 512) instructions]) -- Defines run-type
# AC_DEFINE(HAVE_AVX512BW,1,[Define to 1 if you support AVX512BW (Advanced Vector Extensions 512) BW instructions]) -- Defines run-type
fi
fi
fi
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for gmap 2019-01-24.
# Generated by GNU Autoconf 2.69 for gmap 2019-05-12.
#
# Report bugs to <Thomas Wu <twu@gene.com>>.
#
......@@ -590,8 +590,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='gmap'
PACKAGE_TARNAME='gmap'
PACKAGE_VERSION='2019-01-24'
PACKAGE_STRING='gmap 2019-01-24'
PACKAGE_VERSION='2019-05-12'
PACKAGE_STRING='gmap 2019-05-12'
PACKAGE_BUGREPORT='Thomas Wu <twu@gene.com>'
PACKAGE_URL=''
 
......@@ -652,6 +652,8 @@ MAKE_AVX2_FALSE
MAKE_AVX2_TRUE
MAKE_AVX512_FALSE
MAKE_AVX512_TRUE
MAKE_AVX512BW_FALSE
MAKE_AVX512BW_TRUE
SIMD_AVX512_CFLAGS
SIMD_AVX2_CFLAGS
SIMD_SSE4_2_CFLAGS
......@@ -1373,7 +1375,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures gmap 2019-01-24 to adapt to many kinds of systems.
\`configure' configures gmap 2019-05-12 to adapt to many kinds of systems.
 
Usage: $0 [OPTION]... [VAR=VALUE]...
 
......@@ -1444,7 +1446,7 @@ fi
 
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of gmap 2019-01-24:";;
short | recursive ) echo "Configuration of gmap 2019-05-12:";;
esac
cat <<\_ACEOF
 
......@@ -1501,7 +1503,7 @@ Optional Packages:
compiler's sysroot if not specified).
--with-simd-level=STRING
User-selected SIMD level (none, sse2, ssse3,
sse41/sse4.1, sse42/sse4.2, avx2, avx512)
sse41/sse4.1, sse42/sse4.2, avx2, avx512, avx512bw)
--with-gmapdb=DIR Default GMAP database directory
 
Some influential environment variables:
......@@ -1585,7 +1587,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
gmap configure 2019-01-24
gmap configure 2019-05-12
generated by GNU Autoconf 2.69
 
Copyright (C) 2012 Free Software Foundation, Inc.
......@@ -2191,7 +2193,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
 
It was created by gmap $as_me 2019-01-24, which was
It was created by gmap $as_me 2019-05-12, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
$ $0 $@
......@@ -2541,8 +2543,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking package version" >&5
$as_echo_n "checking package version... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2019-01-24" >&5
$as_echo "2019-01-24" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 2019-05-12" >&5
$as_echo "2019-05-12" >&6; }
 
 
### Read defaults
......@@ -4409,7 +4411,7 @@ fi
 
# Define the identity of the package.
PACKAGE='gmap'
VERSION='2019-01-24'
VERSION='2019-05-12'
 
 
cat >>confdefs.h <<_ACEOF
......@@ -17138,7 +17140,7 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
 
 
# Test for AVX512 support
# Test for AVX512 (F and CD) support
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for avx512 support" >&5
$as_echo_n "checking for avx512 support... " >&6; }
if test "$cross_compiling" = yes; then :
......@@ -17171,6 +17173,39 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
 
 
# Test for AVX512BW and VL support (not in Knights Landing or Knights Mill)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for avx512bw and avx512vl support" >&5
$as_echo_n "checking for avx512bw and avx512vl support... " >&6; }
if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
See \`config.log' for more details" "$LINENO" 5; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <immintrin.h>
int
main ()
{
return _may_i_use_cpu_feature(_FEATURE_AVX512BW | _FEATURE_AVX512VL) ? 0 : 9;
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
ax_cv_cpu_has_avx512bw_ext=yes
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
......@@ -17529,7 +17564,7 @@ fi
 
 
 
# Test for AVX512 support
# Test for AVX512 (F and CD) support
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for avx512 support" >&5
$as_echo_n "checking for avx512 support... " >&6; }
if test "$cross_compiling" = yes; then :
......@@ -17562,7 +17597,7 @@ uint32_t abcd[4];
} else if (!check_xcr0_zmm()) {
return 8;
} else if ((abcd[/*EBX*/1] & avx512_mask) != avx512_mask) {
return 0; /* Should fail here, but book/Web examples skip */
return 0; /* Should be false here, but book/Web examples skip this test */
} else {
return 0;
}
......@@ -17583,6 +17618,62 @@ rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
fi
 
 
# Test for AVX512BW and VL support
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for avx512bw and avx512vl support" >&5
$as_echo_n "checking for avx512bw and avx512vl support... " >&6; }
if test "$cross_compiling" = yes; then :
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run test program while cross compiling
See \`config.log' for more details" "$LINENO" 5; }
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <stdint.h>
static void run_cpuid (uint32_t eax, uint32_t ecx, uint32_t *abcd) {
uint32_t ebx, edx;
__asm__ ("cpuid" : "+b" (ebx), "+a" (eax), "+c" (ecx), "=d" (edx));
abcd[0] = eax; abcd[1] = ebx; abcd[2] = ecx; abcd[3] = edx;}
static int check_xcr0_zmm () {
uint32_t xcr0;
uint32_t zmm_ymm_xmm = ((7 << 5) | (1 << 2) | (1 << 1));
__asm__ ("xgetbv" : "=a" (xcr0) : "c" (0) : "%edx");
return ((xcr0 & zmm_ymm_xmm) == zmm_ymm_xmm);}
int
main ()
{
uint32_t abcd[4];
uint32_t osxsave_mask = (1 << 27);
uint32_t avx512bw_vl_mask = (/*512BW*/(1 << 30) | /*512VL*/(1 << 31));
run_cpuid(1, 0, abcd);
if ((abcd[/*ECX*/2] & osxsave_mask) != osxsave_mask) {
return 9;
} else if (!check_xcr0_zmm()) {
return 8;
} else if ((abcd[/*EBX*/1] & avx512bw_vl_mask) != avx512bw_vl_mask) {
return 9;
} else {
return 0;
}
;
return 0;
}
_ACEOF
if ac_fn_c_try_run "$LINENO"; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
ax_cv_cpu_has_avx512bw_ext=yes
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
fi
rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
conftest.$ac_objext conftest.beam conftest.$ac_ext
fi
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
......@@ -18509,8 +18600,10 @@ fi
CFLAGS=
if test x"$ax_cv_c_compiler_vendor" = xintel; then
TEST_CFLAGS="-xCOMMON-AVX512"
elif test x"$ax_cv_cpu_has_avx512bw_ext" != xyes; then
TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd -mno-avx512bw -mno-avx512vl"
else
TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd"
TEST_CFLAGS="$SIMD_AVX2_CFLAGS -mavx512f -mavx512cd -mavx512bw -mavx512vl"
fi
as_CACHEVAR=`$as_echo "ax_cv_check_cflags__$TEST_CFLAGS" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler accepts $TEST_CFLAGS" >&5
......@@ -18591,6 +18684,8 @@ $as_echo "yes" >&6; }
SIMD_SSE4_2_CFLAGS="$SIMD_SSE4_2_CFLAGS -mno-avx512f -mno-avx512cd"
SIMD_AVX2_CFLAGS="$SIMD_AVX2_CFLAGS -mno-avx512f -mno-avx512cd"
fi
# AC_DEFINE(HAVE_AVX512,1,[Define to 1 if you support AVX512 (Advanced Vector Extensions 512) instructions]) -- Defines run-type
# AC_DEFINE(HAVE_AVX512BW,1,[Define to 1 if you support AVX512BW (Advanced Vector Extensions 512) BW instructions]) -- Defines run-type
fi
fi
fi
......@@ -18610,6 +18705,8 @@ $as_echo "yes" >&6; }
 
if test "x$ax_cv_want_simd" = xno; then
compile_level=none
elif test "x$ax_make_avx512bw" = xyes; then
compile_level=avx512bw
elif test "x$ax_make_avx512" = xyes; then
compile_level=avx512
elif test "x$ax_make_avx2" = xyes; then
......@@ -18643,6 +18740,8 @@ $as_echo_n "checking for user-selected SIMD level... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $compile_level" >&5
$as_echo "$compile_level" >&6; }
case $compile_level in
avx512bw)
;;
avx512)
;;
avx2)
......@@ -18664,13 +18763,21 @@ $as_echo "$compile_level" >&6; }
none)
;;
*)
as_fn_error $? "Compiler level $compile_level not recognized. Allowed values: none, sse2, ssse3, sse4.1 (or sse41), sse4.2 (or sse42), avx2, avx512" "$LINENO" 5
as_fn_error $? "Compiler level $compile_level not recognized. Allowed values: none, sse2, ssse3, sse4.1 (or sse41), sse4.2 (or sse42), avx2, avx512, avx512bw" "$LINENO" 5
;;
esac
fi
 
 
 
if test "$compile_level" = avx512bw; then
MAKE_AVX512BW_TRUE=
MAKE_AVX512BW_FALSE='#'
else
MAKE_AVX512BW_TRUE='#'
MAKE_AVX512BW_FALSE=
fi
if test "$compile_level" = avx512; then
MAKE_AVX512_TRUE=
MAKE_AVX512_FALSE='#'
......@@ -19516,6 +19623,10 @@ if test -z "${MAKE_LIB_TRUE}" && test -z "${MAKE_LIB_FALSE}"; then
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
 
if test -z "${MAKE_AVX512BW_TRUE}" && test -z "${MAKE_AVX512BW_FALSE}"; then
as_fn_error $? "conditional \"MAKE_AVX512BW\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${MAKE_AVX512_TRUE}" && test -z "${MAKE_AVX512_FALSE}"; then
as_fn_error $? "conditional \"MAKE_AVX512\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
......@@ -19937,7 +20048,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by gmap $as_me 2019-01-24, which was
This file was extended by gmap $as_me 2019-05-12, which was
generated by GNU Autoconf 2.69. Invocation command line was
 
CONFIG_FILES = $CONFIG_FILES
......@@ -20003,7 +20114,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
gmap config.status 2019-01-24
gmap config.status 2019-05-12
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
 
......@@ -21879,6 +21990,15 @@ $as_echo_n "checking compile level... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $compile_level" >&5
$as_echo "$compile_level" >&6; }
 
# Re-using SIMD_AVX512_CFLAGS here
if test "$compile_level" = avx512bw; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking AVX512BW compiler flags to be used" >&5
$as_echo_n "checking AVX512BW compiler flags to be used... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $SIMD_AVX512_CFLAGS" >&5
$as_echo "$SIMD_AVX512_CFLAGS" >&6; }
fi
if test "$compile_level" = avx512; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking AVX512 compiler flags to be used" >&5
$as_echo_n "checking AVX512 compiler flags to be used... " >&6; }
......
......@@ -393,6 +393,8 @@ fi
AX_EXT
if test "x$ax_cv_want_simd" = xno; then
compile_level=none
elif test "x$ax_make_avx512bw" = xyes; then
compile_level=avx512bw
elif test "x$ax_make_avx512" = xyes; then
compile_level=avx512
elif test "x$ax_make_avx2" = xyes; then
......@@ -413,7 +415,7 @@ fi
# User-selected compile level
AC_ARG_WITH([simd-level],
AC_HELP_STRING([--with-simd-level=STRING],
[User-selected SIMD level (none, sse2, ssse3, sse41/sse4.1, sse42/sse4.2, avx2, avx512)]),
[User-selected SIMD level (none, sse2, ssse3, sse41/sse4.1, sse42/sse4.2, avx2, avx512, avx512bw)]),
[answer="$withval"],
[answer=""])
if test x"$answer" != x; then
......@@ -421,6 +423,8 @@ if test x"$answer" != x; then
compile_level=$answer
AC_MSG_RESULT($compile_level)
case $compile_level in
avx512bw)
;;
avx512)
;;
avx2)
......@@ -442,13 +446,14 @@ if test x"$answer" != x; then
none)
;;
*)
AC_MSG_ERROR([Compiler level $compile_level not recognized. Allowed values: none, sse2, ssse3, sse4.1 (or sse41), sse4.2 (or sse42), avx2, avx512])
AC_MSG_ERROR([Compiler level $compile_level not recognized. Allowed values: none, sse2, ssse3, sse4.1 (or sse41), sse4.2 (or sse42), avx2, avx512, avx512bw])
;;
esac
fi
AM_CONDITIONAL(MAKE_AVX512BW,[test "$compile_level" = avx512bw])
AM_CONDITIONAL(MAKE_AVX512,[test "$compile_level" = avx512])
AM_CONDITIONAL(MAKE_AVX2,[test "$compile_level" = avx2])
AM_CONDITIONAL(MAKE_SSE4_2,[test "$compile_level" = sse42])
......@@ -701,6 +706,13 @@ AC_MSG_RESULT($POPCNT_CFLAGS)
AC_MSG_CHECKING(compile level)
AC_MSG_RESULT($compile_level)
# Re-using SIMD_AVX512_CFLAGS here
if test "$compile_level" = avx512bw; then
AC_MSG_CHECKING(AVX512BW compiler flags to be used)
AC_MSG_RESULT($SIMD_AVX512_CFLAGS)
fi
if test "$compile_level" = avx512; then
AC_MSG_CHECKING(AVX512 compiler flags to be used)
AC_MSG_RESULT($SIMD_AVX512_CFLAGS)
......
......@@ -86,6 +86,12 @@ if MAKE_AVX512
bin_PROGRAMS += gsnap.avx512
bin_PROGRAMS += gsnapl.avx512
endif
if MAKE_AVX512BW
bin_PROGRAMS += gmap.avx512bw
bin_PROGRAMS += gmapl.avx512bw
bin_PROGRAMS += gsnap.avx512bw
bin_PROGRAMS += gsnapl.avx512bw
endif
LIBGMAP_LA_FILES = bool.h types.h univcoord.h separator.h comp.h \
......@@ -237,6 +243,12 @@ gmap_avx512_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gmap_avx512_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gmap_avx512_SOURCES = $(GMAP_FILES)
gmap_avx512bw_CC = $(PTHREAD_CC)
gmap_avx512bw_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DTARGET=\"$(target)\" -DGMAPDB=\"$(GMAPDB)\" $(POPCNT_CFLAGS) -DHAVE_SSE2=1 -DHAVE_SSSE3=1 -DHAVE_SSE4_1=1 -DHAVE_SSE4_2=1 -DHAVE_AVX2=1 -DHAVE_AVX512=1 -DHAVE_AVX512BW=1 $(SIMD_AVX512_CFLAGS)
gmap_avx512bw_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gmap_avx512bw_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gmap_avx512bw_SOURCES = $(GMAP_FILES)
GMAPL_FILES = bool.h types.h univcoord.h separator.h comp.h \
......@@ -323,6 +335,12 @@ gmapl_avx512_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gmapl_avx512_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gmapl_avx512_SOURCES = $(GMAPL_FILES)
gmapl_avx512bw_CC = $(PTHREAD_CC)
gmapl_avx512bw_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DTARGET=\"$(target)\" -DGMAPDB=\"$(GMAPDB)\" -DLARGE_GENOMES=1 $(POPCNT_CFLAGS) -DHAVE_SSE2=1 -DHAVE_SSSE3=1 -DHAVE_SSE4_1=1 -DHAVE_SSE4_2=1 -DHAVE_AVX2=1 -DHAVE_AVX512=1 -DHAVE_AVX512BW=1 $(SIMD_AVX512_CFLAGS)
gmapl_avx512bw_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gmapl_avx512bw_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gmapl_avx512bw_SOURCES = $(GMAPL_FILES)
GSNAP_FILES = bool.h types.h univcoord.h comp.h \
except.c except.h assert.c assert.h mem.c mem.h \
......@@ -361,7 +379,7 @@ GSNAP_FILES = bool.h types.h univcoord.h comp.h \
univdiagdef.h univdiag.c univdiag.h univdiagpool.c univdiagpool.h sedgesort.c sedgesort.h \
intersect.c intersect.h kmer-search.c kmer-search.h \
path-solve.c path-solve.h extension-search.c extension-search.h segment-search.c segment-search.h \
terminal.c terminal.h distant-rna.c distant-rna.h \
terminal.c terminal.h distant-rna.c distant-rna.h distant-dna.c distant-dna.h \
uint8table_rh.c uint8table_rh.h uinttable_rh.c uinttable_rh.h stage1hr.c stage1hr.h \
request.c request.h resulthr.c resulthr.h output.c output.h \
inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
......@@ -414,6 +432,12 @@ gsnap_avx512_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gsnap_avx512_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gsnap_avx512_SOURCES = $(GSNAP_FILES)
gsnap_avx512bw_CC = $(PTHREAD_CC)
gsnap_avx512bw_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DTARGET=\"$(target)\" -DGMAPDB=\"$(GMAPDB)\" -DMAX_STACK_READLENGTH=$(MAX_STACK_READLENGTH) -DGSNAP=1 $(POPCNT_CFLAGS) -DHAVE_SSE2=1 -DHAVE_SSSE3=1 -DHAVE_SSE4_1=1 -DHAVE_SSE4_2=1 -DHAVE_AVX2=1 -DHAVE_AVX512=1 -DHAVE_AVX512BW=1 $(SIMD_AVX512_CFLAGS)
gsnap_avx512bw_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gsnap_avx512bw_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gsnap_avx512bw_SOURCES = $(GSNAP_FILES)
......@@ -456,7 +480,7 @@ GSNAPL_FILES = bool.h types.h univcoord.h comp.h \
univdiagdef.h univdiag.c univdiag.h univdiagpool.c univdiagpool.h sedgesort.c sedgesort.h \
intersect.c intersect.h intersect-large.c intersect-large.h kmer-search.c kmer-search.h \
path-solve.c path-solve.h extension-search.c extension-search.h segment-search.c segment-search.h \
terminal.c terminal.h distant-rna.c distant-rna.h \
terminal.c terminal.h distant-rna.c distant-rna.h distant-dna.c distant-dna.h \
uint8table_rh.c uint8table_rh.h stage1hr.c stage1hr.h \
request.c request.h resulthr.c resulthr.h output.c output.h \
inbuffer.c inbuffer.h samheader.c samheader.h outbuffer.c outbuffer.h \
......@@ -508,6 +532,12 @@ gsnapl_avx512_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gsnapl_avx512_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gsnapl_avx512_SOURCES = $(GSNAPL_FILES)
gsnapl_avx512bw_CC = $(PTHREAD_CC)
gsnapl_avx512bw_CFLAGS = $(AM_CFLAGS) $(PTHREAD_CFLAGS) -DTARGET=\"$(target)\" -DGMAPDB=\"$(GMAPDB)\" -DMAX_STACK_READLENGTH=$(MAX_STACK_READLENGTH) -DGSNAP=1 -DLARGE_GENOMES=1 $(POPCNT_CFLAGS) -DHAVE_SSE2=1 -DHAVE_SSSE3=1 -DHAVE_SSE4_1=1 -DHAVE_SSE4_2=1 -DHAVE_AVX2=1 -DHAVE_AVX512=1 -DHAVE_AVX512BW=1 $(SIMD_AVX512_CFLAGS)
gsnapl_avx512bw_LDFLAGS = $(AM_LDFLAGS) $(STATIC_LDFLAG)
gsnapl_avx512bw_LDADD = $(PTHREAD_LIBS) $(ZLIB_LIBS) $(BZLIB_LIBS)
dist_gsnapl_avx512bw_SOURCES = $(GSNAPL_FILES)
# Build as a non-SIMD program
UNIQSCAN_FILES = bool.h types.h univcoord.h separator.h comp.h \
......@@ -549,7 +579,7 @@ UNIQSCAN_FILES = bool.h types.h univcoord.h separator.h comp.h \
univdiagdef.h univdiag.c univdiag.h univdiagpool.c univdiagpool.h sedgesort.c sedgesort.h \
intersect.c intersect.h kmer-search.c kmer-search.h \
path-solve.c path-solve.h extension-search.c extension-search.h segment-search.c segment-search.h \
terminal.c terminal.h distant-rna.c distant-rna.h \
terminal.c terminal.h distant-rna.c distant-rna.h distant-dna.c distant-dna.h \
uint8table_rh.c uint8table_rh.h uinttable_rh.c uinttable_rh.h stage1hr.c stage1hr.h \
resulthr.c resulthr.h \
datadir.c datadir.h mode.h parserange.c parserange.h \
......@@ -604,7 +634,7 @@ UNIQSCANL_FILES = bool.h types.h univcoord.h separator.h comp.h \
univdiagdef.h univdiag.c univdiag.h univdiagpool.c univdiagpool.h sedgesort.c sedgesort.h \
intersect.c intersect.h intersect-large.c intersect-large.h kmer-search.c kmer-search.h \
path-solve.c path-solve.h extension-search.c extension-search.h segment-search.c segment-search.h \
terminal.c terminal.h distant-rna.c distant-rna.h \
terminal.c terminal.h distant-rna.c distant-rna.h distant-dna.c distant-dna.h \
uint8table_rh.c uint8table_rh.h stage1hr.c stage1hr.h \
resulthr.c resulthr.h \
datadir.c datadir.h mode.h parserange.c parserange.h \
......
This diff is collapsed.
This diff is collapsed.
/* $Id: bitpack64-write.h 212659 2018-01-20 00:58:14Z twu $ */
/* $Id: bitpack64-write.h 218388 2019-02-15 23:27:10Z twu $ */
#ifndef BITPACK64_WRITE_INCLUDED
#define BITPACK64_WRITE_INCLUDED
#include <stdio.h>
......@@ -16,18 +16,16 @@ Bitpack64_write_differential (char *ptrsfile, char *compfile, UINT4 *ascending,
extern void
Bitpack64_write_differential_bitpacks (char *ptrsfile, char *compfile, char *packsizes, UINT4 **bitpacks,
Oligospace_T n);
extern UINT4
Bitpack64_append_differential_bitpacks (UINT4 *totalcount, FILE *ptrs_fp, FILE *comp_fp, char *packsizes, UINT4 **bitpacks,
Oligospace_T n);
#if 0
extern void
Bitpack64_write_differential_huge (char *pagesfile, char *ptrsfile, char *compfile,
UINT8 *ascending, Oligospace_T n);
#endif
extern void
Bitpack64_write_differential_huge_bitpacks (char *pagesfile, char *ptrsfile, char *compfile,
char *packsizes, UINT4 **bitpacks, Oligospace_T n);
/* Stores the $n$ values [0..(n-1)] */
extern void
Bitpack64_write_direct (char *ptrsfile, char *compfile, UINT4 *direct, Oligospace_T n);
char *packsizes, UINT4 **bitpacks,
#ifdef COUNTS_WITHOUT_COMPRESSION
UINT4* counts_direct,
#endif
Oligospace_T n);
#endif
This diff is collapsed.
This diff is collapsed.
/* $Id: concordance.h 218286 2019-01-23 16:46:55Z twu $ */
/* $Id: concordance.h 218473 2019-02-22 23:39:06Z twu $ */
#ifndef CONCORDANCE_INCLUDED
#define CONCORDANCE_INCLUDED
#ifdef HAVE_CONFIG_H
......@@ -20,7 +20,7 @@
extern List_T
Concordance_pair_up_transcriptome (bool *abort_pairing_p, int *concordant_score, List_T hitpairs,
Concordance_pair_up_transcriptome (bool *abort_pairing_p, int *concordant_score_overall, List_T hitpairs,
Ladder_T ladder5_plus, Ladder_T ladder5_minus,
Ladder_T ladder3_plus, Ladder_T ladder3_minus,
......@@ -35,7 +35,8 @@ Concordance_pair_up_transcriptome (bool *abort_pairing_p, int *concordant_score,
int maxpairedpaths, int genestrand);
extern List_T
Concordance_pair_up_genome (bool *abort_pairing_p, int *adjacent_score, int *concordant_score, List_T hitpairs,
Concordance_pair_up_genome (bool *abort_pairing_p, int *adjacent_score, int *concordant_score_overall,
List_T *distant_hitpairs, List_T hitpairs,
List_T hitlist5_gplus, List_T hitlist5_gminus,
List_T hitlist3_gplus, List_T hitlist3_gminus,
......@@ -55,7 +56,7 @@ Concordance_pair_up_genome (bool *abort_pairing_p, int *adjacent_score, int *con
int maxpairedpaths, int genestrand);
extern List_T
Concordance_pair_up_distant (bool *abort_pairing_p, int *concordant_score,
Concordance_pair_up_distant (bool *abort_pairing_p, int *concordant_score_overall,
List_T *samechr, List_T *conc_transloc, List_T hitpairs,
List_T hitlist5_gplus, List_T hitlist5_gminus,
......
static char rcsid[] = "$Id: cpuid.c 201743 2016-12-16 16:41:11Z twu $";
static char rcsid[] = "$Id: cpuid.c 219226 2019-05-12 22:32:05Z twu $";
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
......@@ -11,13 +11,14 @@ static char rcsid[] = "$Id: cpuid.c 201743 2016-12-16 16:41:11Z twu $";
void
CPUID_support (bool *sse2_support_p, bool *ssse3_support_p, bool *sse4_1_support_p, bool *sse4_2_support_p,
bool *avx2_support_p, bool *avx512_support_p) {
bool *avx2_support_p, bool *avx512_support_p, bool $avx512bw_support_p) {
*sse2_support_p = false;
*ssse3_support_p = false;
*sse4_1_support_p = false;
*sse4_2_support_p = false;
*avx2_support_p = false;
*avx512_support_p = false;
*avx512bw_support_p = false;
return;
}
......@@ -36,6 +37,7 @@ CPUID_support (bool *sse2_support_p, bool *ssse3_support_p, bool *sse4_1_support
*sse4_2_support_p = _may_i_use_cpu_feature(_FEATURE_SSE4_2);
*avx2_support_p = _may_i_use_cpu_feature(_FEATURE_AVX2 | _FEATURE_FMA | _FEATURE_BMI | _FEATURE_LZCNT | _FEATURE_MOVBE);
*avx512_support_p = _may_i_use_cpu_feature(_FEATURE_AVX512F | _FEATURE_AVX512CD);
*avx512bw_support_p = _may_i_use_cpu_feature(_FEATURE_AVX512BW | _FEATURE_AVX512VL);
return;
}
......@@ -97,7 +99,7 @@ check_xcr0_zmm () {
void
CPUID_support (bool *sse2_support_p, bool *ssse3_support_p, bool *sse4_1_support_p, bool *sse4_2_support_p,
bool *avx2_support_p, bool *avx512_support_p) {
bool *avx2_support_p, bool *avx512_support_p, bool *avx512bw_support_p) {
uint32_t abcd[4];
uint32_t sse2_mask = (1 << 26); /* edx */
uint32_t ssse3_mask = (1 << 9); /* ecx */
......@@ -112,6 +114,7 @@ CPUID_support (bool *sse2_support_p, bool *ssse3_support_p, bool *sse4_1_support
uint32_t osxsave_mask = (1 << 27); /* ecx */
uint32_t avx512_mask = ((1 << 16) | (1 << 28)); /* ebx */
uint32_t avx512bw_vl_mask = ((1 << 30) | (1 << 31)); /* ebx */
run_cpuid(1, 0, abcd);
......@@ -154,13 +157,18 @@ CPUID_support (bool *sse2_support_p, bool *ssse3_support_p, bool *sse4_1_support
run_cpuid(1, 0, abcd);
if ((abcd[ECX] & osxsave_mask) != osxsave_mask) {
*avx512_support_p = false;
*avx512bw_support_p = false;
} else if (!check_xcr0_zmm()) {
*avx512_support_p = false;
} else if ((abcd[EBX] & avx512_mask) != avx512_mask) {
*avx512_support_p = true; /* Should fail, but book/Web examples skip this check */
*avx512bw_support_p = false;
} else {
if ((abcd[EBX] & avx512_mask) != avx512_mask) {
*avx512_support_p = true; /* Should be false, but book/Web examples skip this check */
} else {
*avx512_support_p = true;
}
*avx512bw_support_p = ((abcd[EBX] & avx512bw_vl_mask) == avx512bw_vl_mask) ? true : false;
}
return;
}
......@@ -177,9 +185,10 @@ main (int argc, char *argv[]) {
bool sse4_2_support_p;
bool avx2_support_p;
bool avx512_support_p;
bool avx512bw_support_p;
CPUID_support(&sse2_support_p,&ssse3_support_p,&sse4_1_support_p,&sse4_2_support_p,
&avx2_support_p,&avx512_support_p);
&avx2_support_p,&avx512_support_p,&avx512bw_support_p);
printf("sse2 support: %d\n",sse2_support_p);
printf("ssse3 support: %d\n",ssse3_support_p);
......@@ -187,6 +196,7 @@ main (int argc, char *argv[]) {
printf("sse4.2 support: %d\n",sse4_2_support_p);
printf("avx2 support: %d\n",avx2_support_p);
printf("avx512 support: %d\n",avx512_support_p);
printf("avx512bw support: %d\n",avx512bw_support_p);
return 0;
}
......
/* $Id: cpuid.h 200231 2016-11-08 00:55:17Z twu $ */
/* $Id: cpuid.h 219226 2019-05-12 22:32:05Z twu $ */
#ifndef CPUID_INCLUDED
#define CPUID_INCLUDED
#include "bool.h"
extern void
CPUID_support (bool *sse2_support_p, bool *ssse3_support_p, bool *sse4_1_support_p, bool *sse4_2_support_p,
bool *avx2_support_p, bool *avx512_support_p);
bool *avx2_support_p, bool *avx512_support_p, bool *avx512bw_support_p);
#endif
This diff is collapsed.
/* $Id: distant-dna.h 218675 2019-03-16 01:25:48Z twu $ */
#ifndef DISTANT_DNA_INCLUDED
#define DISTANT_DNA_INCLUDED
#include "bool.h"
#include "list.h"
#include "genomicpos.h"
#include "compress.h"
#include "genome.h"
#include "listpool.h"
#include "hitlistpool.h"
extern void
Distant_dna_solve (int *found_score_overall, int *found_score_within_trims,
List_T *hits_plus, List_T *hits_minus,
List_T startfrags_plus, List_T endfrags_plus,
List_T startfrags_minus, List_T endfrags_minus,
int *mismatch_positions_alloc,
Compress_T query_compress_fwd, Compress_T query_compress_rev,
int querylength, bool first_read_p,
Listpool_T listpool, Hitlistpool_T hitlistpool, int level);
extern void
Distant_dna_setup (Genome_T genomebits_in, Genome_T genomebits_alt_in,
Chrpos_T shortsplicedist_in);
#endif
This diff is collapsed.
/* $Id: distant-rna.h 218160 2019-01-17 05:49:56Z twu $ */
/* $Id: distant-rna.h 218675 2019-03-16 01:25:48Z twu $ */
#ifndef DISTANT_RNA_INCLUDED
#define DISTANT_RNA_INCLUDED
......@@ -13,14 +13,18 @@
extern void
Distant_rna_solve (int *found_score, List_T *hits_plus, List_T *hits_minus,
Distant_rna_solve (int *found_score_overall, int *found_score_within_trims,
List_T *hits_plus, List_T *hits_minus,
List_T *startfrags_plus, List_T *endfrags_plus,
List_T *startfrags_minus, List_T *endfrags_minus,
List_T queryfwd_plus_set, List_T queryfwd_minus_set,
List_T queryrev_plus_set, List_T queryrev_minus_set,
int *mismatch_positions_alloc, int *positions_alloc,
Compress_T query_compress_fwd, Compress_T query_compress_rev,
int querylength, int max_splice_mismatches,
char *queryuc_ptr, char *queryrc, int querylength, int max_splice_mismatches,
int genestrand, bool first_read_p, Listpool_T listpool,
Hitlistpool_T hitlistpool, int level);
......