cmake: don't warn about missing MIC SDK

a status message is enough. it's perfectly fine to work on a non-MIC
development environment.

Signed-off-by: Matthias Kretz <kretz@kde.org>
common iface: new header for casts

Signed-off-by: Matthias Kretz <kretz@kde.org>
AVX::Mask: fix operator==

AVX::Mask::operator== used _mm(256)_testc_ps to check for equality. This
works for many combinations but not if the left operand isEmpty() or the
right operand isFull(). The only correct solution seems to be an integer
compare of the movemask results of both operands.

closes #684

Signed-off-by: Matthias Kretz <kretz@kde.org>

Conflicts:
	avx/mask.h
	tests/mask.cpp
cmake: add haswell option for arch

Signed-off-by: Matthias Kretz <kretz@kde.org>
cmake: model 60 is a haswell cpu

Thanks Georgios for the info

Signed-off-by: Matthias Kretz <kretz@kde.org>
SSE: fix Mask::operator== by not using ptest

The _mm_testc_* intrinsic doesn't do the right thing for all compares.
Therefore use the movemask compare.

refs #684

Signed-off-by: Matthias Kretz <kretz@kde.org>
mask test: more thorough testing

use a random mask to flip bits instead of flipping all bits. This will
help to find problems where only a subset of the mask entries is
compared.

Signed-off-by: Matthias Kretz <kretz@kde.org>
cmake: adjustments for inside ROOT buildsystem

inside ROOT Vc_INSIDE_ROOT is defined. In that case we need to do some
adjustments for nameing and placing the tests.
Also the libc++ switch is now left alone - the ROOT buildsystem needs to
figure it out.

Signed-off-by: Matthias Kretz <kretz@kde.org>
cmake: disable warning C4290 with MSVC

that warning is useless noise. I don't care whether MSVC would have done
what I wanted without this statement. This statement is required by the
C++ standard, so please don't warn about it.

The switch is in CMakeLists.txt instead of VcMacros.cmake because it's
only needed for unittest.h.

Signed-off-by: Matthias Kretz <kretz@kde.org>
cmake: add build_tests target

I added a new custom target 'build_tests' that has all test executables
as dependency. In development versions build_tests is made with all, in
release versions you'll have to make build_tests explicitly. A standard
make all will then only build libVc.

Signed-off-by: Matthias Kretz <kretz@kde.org>
docs: don't generate LaTeX and man

The latex output from doxygen is broken (missing namespaces.tex) and the
man output looks too unreadable to be useful. So I'd rather only keep
the HTML variant for now. Until somebody wants to maintain one of these
other outputs.

Signed-off-by: Matthias Kretz <kretz@kde.org>
release script: no tests & build docs

* remove build_tests from all target for release tarballs
* run doxygen and store qch file and docs tarball

Signed-off-by: Matthias Kretz <kretz@kde.org>
release script: bail out if tagging fails

Signed-off-by: Matthias Kretz <kretz@kde.org>
docs: remove .qhp file when done

The .qhp file is an intermediate file that can be removed after the .qch
file is created.

Signed-off-by: Matthias Kretz <kretz@kde.org>
ctest: support ctest runs Debug

CMAKE_BUILD_TYPE was "hardcoded" to Release. Now the build_type
environment variable can overwrite this default. Also this string is now
added to the BUILD_NAME.

Signed-off-by: Matthias Kretz <kretz@kde.org>
workaround GCC not recognizing sizeof as immediate

GCC builtins that require an immediate don't compile with sizeof as
argument unless -O2 is given. This workaround assigns the value of the
sizeof operator to an enum and uses the enum as parameter to the
builtin.

Signed-off-by: Matthias Kretz <kretz@kde.org>

Conflicts:

	sse/vector.tcc

Signed-off-by: Matthias Kretz <kretz@kde.org>
cmake: add run target for ABI tests

Signed-off-by: Matthias Kretz <kretz@kde.org>
Vector cctor and copy assignment are not needed

The default copy ctor and assignment operator suffice. Thus I don't want
to specify them in the "spec" and leave it out in Vc as well.

Signed-off-by: Matthias Kretz <kretz@kde.org>
operators: use deleted function instead of static_assert

static_assert leads to incorrect SFINAE behavior. On the other hand
static_assert allows the best diagnostics output. Until C++ has a better
mechanism use a deleted function instead that corrects the SFINAE
behavior, with the tradeof that the diagnostics output is slightly
worse.

Signed-off-by: Matthias Kretz <kretz@kde.org>