diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2014-06-11 09:17:18 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2014-06-11 09:17:18 +0000 |
commit | 5d357f260ce3312db63b4fb69bec250fa07de553 (patch) | |
tree | 55b9ca10dd9ea346fb1cc2257ff6aca943a18246 /gcc/doc | |
parent | e1377713ce21a9ee25b3d6b7dbb9aaf7b7f7d4a5 (diff) | |
download | gcc-5d357f260ce3312db63b4fb69bec250fa07de553.zip gcc-5d357f260ce3312db63b4fb69bec250fa07de553.tar.gz gcc-5d357f260ce3312db63b4fb69bec250fa07de553.tar.bz2 |
[AArch64] Implement CRC32 ACLE intrinsics.
* config.gcc (aarch64*-*-*): Add arm_acle.h to extra headers.
* Makefile.in (TEXI_GCC_FILES): Add aarch64-acle-intrinsics.texi to
dependencies.
* config/aarch64/aarch64-builtins.c (AARCH64_CRC32_BUILTINS): Define.
(aarch64_crc_builtin_datum): New struct.
(aarch64_crc_builtin_data): New.
(aarch64_init_crc32_builtins): New function.
(aarch64_init_builtins): Initialise CRC32 builtins when appropriate.
(aarch64_crc32_expand_builtin): New.
(aarch64_expand_builtin): Add CRC32 builtin expansion case.
* config/aarch64/aarch64.h (TARGET_CPU_CPP_BUILTINS): Define
__ARM_FEATURE_CRC32 when appropriate.
(TARGET_CRC32): Define.
* config/aarch64/aarch64.md (UNSPEC_CRC32B, UNSPEC_CRC32H,
UNSPEC_CRC32W, UNSPEC_CRC32X, UNSPEC_CRC32CB, UNSPEC_CRC32CH,
UNSPEC_CRC32CW, UNSPEC_CRC32CX): New unspec values.
(aarch64_<crc_variant>): New pattern.
* config/aarch64/arm_acle.h: New file.
* config/aarch64/iterators.md (CRC): New int iterator.
(crc_variant, crc_mode): New int attributes.
* doc/aarch64-acle-intrinsics.texi: New file.
* doc/extend.texi (aarch64): Document aarch64 ACLE intrinsics.
Include aarch64-acle-intrinsics.texi.
From-SVN: r211440
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/aarch64-acle-intrinsics.texi | 55 | ||||
-rw-r--r-- | gcc/doc/extend.texi | 6 |
2 files changed, 61 insertions, 0 deletions
diff --git a/gcc/doc/aarch64-acle-intrinsics.texi b/gcc/doc/aarch64-acle-intrinsics.texi new file mode 100644 index 0000000..3194511 --- /dev/null +++ b/gcc/doc/aarch64-acle-intrinsics.texi @@ -0,0 +1,55 @@ +@c Copyright (C) 2014 Free Software Foundation, Inc. +@c This is part of the GCC manual. +@c For copying conditions, see the file gcc.texi. + +@subsubsection CRC32 intrinsics + +These intrinsics are available when the CRC32 architecture extension is +specified, e.g. when the @option{-march=armv8-a+crc} switch is used, or when +the target processor specified with @option{-mcpu} supports it. + +@itemize @bullet +@item uint32_t __crc32b (uint32_t, uint8_t) +@*@emph{Form of expected instruction(s):} @code{crc32b @var{w0}, @var{w1}, @var{w2}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32h (uint32_t, uint16_t) +@*@emph{Form of expected instruction(s):} @code{crc32h @var{w0}, @var{w1}, @var{w2}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32w (uint32_t, uint32_t) +@*@emph{Form of expected instruction(s):} @code{crc32w @var{w0}, @var{w1}, @var{w2}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32d (uint32_t, uint64_t) +@*@emph{Form of expected instruction(s):} @code{crc32x @var{w0}, @var{w1}, @var{x2}} +@end itemize + +@itemize @bullet +@item uint32_t __crc32cb (uint32_t, uint8_t) +@*@emph{Form of expected instruction(s):} @code{crc32cb @var{w0}, @var{w1}, @var{w2}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32ch (uint32_t, uint16_t) +@*@emph{Form of expected instruction(s):} @code{crc32ch @var{w0}, @var{w1}, @var{w2}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32cw (uint32_t, uint32_t) +@*@emph{Form of expected instruction(s):} @code{crc32cw @var{w0}, @var{w1}, @var{w2}} +@end itemize + + +@itemize @bullet +@item uint32_t __crc32cd (uint32_t, uint64_t) +@*@emph{Form of expected instruction(s):} @code{crc32cx @var{w0}, @var{w1}, @var{x2}} +@end itemize diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index a79dbbf..c34c1b6 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -9697,6 +9697,7 @@ instructions, but allow the compiler to schedule those calls. @menu * AArch64 Built-in Functions:: +* AArch64 intrinsics:: * Alpha Built-in Functions:: * Altera Nios II Built-in Functions:: * ARC Built-in Functions:: @@ -9742,6 +9743,11 @@ unsigned int __builtin_aarch64_get_fpsr () void __builtin_aarch64_set_fpsr (unsigned int) @end smallexample +@node AArch64 intrinsics +@subsection ACLE Intrinsics for AArch64 + +@include aarch64-acle-intrinsics.texi + @node Alpha Built-in Functions @subsection Alpha Built-in Functions |