Skip to content

Commit

Permalink
Polyfill vcvtnq_s32_f32 for AArch32 GCC
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 380031679
  • Loading branch information
Maratyszcza authored and xnnpack-bot committed Jun 17, 2021
1 parent 0ae35f2 commit 16d79ed
Show file tree
Hide file tree
Showing 19 changed files with 32 additions and 0 deletions.
2 changes: 2 additions & 0 deletions src/qs8-gemm/MRxNRc4-neondot.c.in
Expand Up @@ -12,6 +12,8 @@ $assert REQUANTIZATION in ["GEMMLOWP", "FP32"]
#include <arm_neon.h>

#include <xnnpack/gemm.h>
$if REQUANTIZATION == "FP32":
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/1x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/1x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/4x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/4x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/6x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/6x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/8x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-gemm/gen/8x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/gemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
2 changes: 2 additions & 0 deletions src/qs8-igemm/MRxNRc4-neondot.c.in
Expand Up @@ -12,6 +12,8 @@ $assert REQUANTIZATION in ["GEMMLOWP", "FP32"]
#include <arm_neon.h>

#include <xnnpack/igemm.h>
$if REQUANTIZATION == "FP32":
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/1x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/1x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/4x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/4x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/6x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/6x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/8x16c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
1 change: 1 addition & 0 deletions src/qs8-igemm/gen/8x8c4-minmax-fp32-neondot.c
Expand Up @@ -12,6 +12,7 @@
#include <arm_neon.h>

#include <xnnpack/igemm.h>
#include <xnnpack/intrinsics-polyfill.h>
#include <xnnpack/math.h>


Expand Down
12 changes: 12 additions & 0 deletions src/xnnpack/intrinsics-polyfill.h
Expand Up @@ -128,4 +128,16 @@ __m512i _mm512_set_epi8(
}
#endif // GCC pre-9

// AArch32 GCC, see
// - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71233
// - https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95399
#if XNN_ARCH_ARM && defined(__GNUC__) && !defined(__clang__) && defined(__ARM_NEON__)
#include <arm_neon.h>

static XNN_INTRINSIC
int32x4_t vcvtnq_s32_f32(float32x4_t v) {
return vcvtq_s32_f32(vrndnq_f32(v));
}
#endif // AArch32 GCC

#endif // __AVX512F__

0 comments on commit 16d79ed

Please sign in to comment.