Skip to content

Commit 30d82dd

Browse files
committed
Fix use of CRC32 intrinsics with Armv8-a and hard-float
Backport patch from gcc to fix issue with building w/arm_acle.h. Signed-off-by: Kumar Gala <[email protected]>
1 parent 6dd3e26 commit 30d82dd

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
From 28e0d7f15c5aa1fabd0b4b23d88d88263363cce9 Mon Sep 17 00:00:00 2001
2+
From: Kyrylo Tkachov <[email protected]>
3+
Date: Wed, 25 Sep 2019 13:48:29 +0000
4+
Subject: [PATCH] [arm] Fix use of CRC32 intrinsics with Armv8-a and hard-float
5+
6+
Backport from mainline
7+
2019-08-22 Kyrylo Tkachov <[email protected]>
8+
9+
* config/arm/arm_acle.h: Use arch=armv8-a+crc+simd pragma for CRC32
10+
intrinsics if __ARM_FP.
11+
Use __ARM_FEATURE_CRC32 ifdef guard.
12+
13+
* gcc.target/arm/acle/crc_hf_1.c: New test.
14+
15+
From-SVN: r276126
16+
---
17+
gcc/ChangeLog | 9 +++++++++
18+
gcc/config/arm/arm_acle.h | 8 ++++++--
19+
gcc/testsuite/ChangeLog | 7 +++++++
20+
gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c | 14 ++++++++++++++
21+
4 files changed, 36 insertions(+), 2 deletions(-)
22+
create mode 100644 gcc/testsuite/gcc.target/arm/acle/crc_hf_1.c
23+
24+
diff --git a/gcc/config/arm/arm_acle.h b/gcc/config/arm/arm_acle.h
25+
index 2c7acc698ea..6857ab1787d 100644
26+
--- a/gcc/config/arm/arm_acle.h
27+
+++ b/gcc/config/arm/arm_acle.h
28+
@@ -174,8 +174,12 @@ __arm_mrrc2 (const unsigned int __coproc, const unsigned int __opc1,
29+
#endif /* (!__thumb__ || __thumb2__) && __ARM_ARCH >= 4. */
30+
31+
#pragma GCC push_options
32+
-#if __ARM_ARCH >= 8
33+
+#ifdef __ARM_FEATURE_CRC32
34+
+#ifdef __ARM_FP
35+
+#pragma GCC target ("arch=armv8-a+crc+simd")
36+
+#else
37+
#pragma GCC target ("arch=armv8-a+crc")
38+
+#endif
39+
40+
__extension__ static __inline uint32_t __attribute__ ((__always_inline__))
41+
__crc32b (uint32_t __a, uint8_t __b)
42+
@@ -235,7 +239,7 @@ __crc32cd (uint32_t __a, uint64_t __b)
43+
}
44+
#endif
45+
46+
-#endif /* __ARM_ARCH >= 8. */
47+
+#endif /* __ARM_FEATURE_CRC32 */
48+
#pragma GCC pop_options
49+
50+
#ifdef __cplusplus

0 commit comments

Comments
 (0)