added support for aarch64

__ARM_NEON__ is not defined on gcc anymore ..
This commit is contained in:
Ahmet Inan 2023-05-05 08:03:34 +02:00
commit 986059694e
4 changed files with 8 additions and 5 deletions

View file

@ -129,7 +129,7 @@ struct PolarHelper<SIMD<int8_t, WIDTH>>
}
static TYPE qmul(TYPE a, TYPE b)
{
#ifdef __ARM_NEON__
#ifdef __ARM_NEON
return vmul(a, b);
#else
return vsign(a, b);
@ -137,7 +137,7 @@ struct PolarHelper<SIMD<int8_t, WIDTH>>
}
static TYPE prod(TYPE a, TYPE b)
{
#ifdef __ARM_NEON__
#ifdef __ARM_NEON
return vmul(vmul(vsignum(a), vsignum(b)), vmin(vqabs(a), vqabs(b)));
#else
return vsign(vmin(vqabs(a), vqabs(b)), vsign(vsignum(a), b));
@ -145,7 +145,7 @@ struct PolarHelper<SIMD<int8_t, WIDTH>>
}
static TYPE madd(TYPE a, TYPE b, TYPE c)
{
#ifdef __ARM_NEON__
#ifdef __ARM_NEON
return vqadd(vmul(a, vmax(b, vdup<TYPE>(-127))), c);
#else
return vqadd(vsign(vmax(b, vdup<TYPE>(-127)), a), c);

View file

@ -30,7 +30,7 @@ public:
}
};
#ifdef __ARM_NEON__
#ifdef __ARM_NEON
template <int WIDTH>
class Rotate<SIMD<int8_t, 16>, WIDTH>
{

View file

@ -1504,7 +1504,7 @@ static inline SIMD<double, WIDTH> vshuf(SIMD<double, WIDTH> a, SIMD<uint64_t, WI
#endif
#endif
#ifdef __ARM_NEON__
#ifdef __ARM_NEON
#include "neon.hh"
#endif
#endif

View file

@ -8,6 +8,9 @@ CXX = clang++ -stdlib=libc++ -march=native
#CXX = armv7a-hardfloat-linux-gnueabi-g++ -static -mfpu=neon -march=armv7-a
#QEMU = qemu-arm
#CXX = aarch64-unknown-linux-gnu-g++ -static
#QEMU = qemu-aarch64
.PHONY: clean test
tests := $(basename $(wildcard *_test.*))