]> git.ipfire.org Git - thirdparty/gcc.git/commit
arm.c (enum arm_builtins): Add crypto builtins.
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>
Thu, 19 Dec 2013 18:21:10 +0000 (18:21 +0000)
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>
Thu, 19 Dec 2013 18:21:10 +0000 (18:21 +0000)
commit021b5e6b54aecf36d3b105368485682e5d06782a
tree9677a093f409fce0942b03b172447f9574d12b77
parentb78e932d513b7d3373bc5e1aab456dda737d07d0
arm.c (enum arm_builtins): Add crypto builtins.

2013-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>

 * config/arm/arm.c (enum arm_builtins): Add crypto builtins.
 (arm_init_neon_builtins): Handle crypto builtins.
 (bdesc_2arg): Likewise.
 (bdesc_1arg): Likewise.
 (bdesc_3arg): New table.
 (arm_expand_ternop_builtin): New function.
 (arm_expand_unop_builtin): Handle sha1h explicitly.
 (arm_expand_builtin): Handle ternary builtins.
 * config/arm/arm.h (TARGET_CPU_CPP_BUILTINS):
 Define __ARM_FEATURE_CRYPTO.
 * config/arm/arm.md: Include crypto.md.
 (is_neon_type): Add crypto types.
 * config/arm/arm_neon_builtins.def: Add TImode reinterprets.
 * config/arm/crypto.def: New.
 * config/arm/crypto.md: Likewise.
 * config/arm/iterators.md (CRYPTO_UNARY): New int iterator.
 (CRYPTO_BINARY): Likewise.
 (CRYPTO_TERNARY): Likewise.
 (CRYPTO_SELECTING): Likewise.
 (crypto_pattern): New int attribute.
 (crypto_size_sfx): Likewise.
 (crypto_mode): Likewise.
 (crypto_type): Likewise.
 * config/arm/neon-gen.ml: Handle poly64_t and poly128_t types.
 Handle crypto intrinsics.
 * config/arm/neon.ml: Add support for poly64 and polt128 types
 and intrinsics. Define crypto intrinsics.
 * config/arm/neon.md (neon_vreinterpretti<mode>): New pattern.
 (neon_vreinterpretv16qi<mode>): Use VQXMOV mode iterator.
 (neon_vreinterpretv8hi<mode>): Likewise.
 (neon_vreinterpretv4si<mode>): Likewise.
 (neon_vreinterpretv4sf<mode>): Likewise.
 (neon_vreinterpretv2di<mode>): Likewise.
 * config/arm/unspecs.md (UNSPEC_AESD, UNSPEC_AESE, UNSPEC_AESIMC,
 UNSPEC_AESMC, UNSPEC_SHA1C, UNSPEC_SHA1M, UNSPEC_SHA1P, UNSPEC_SHA1H,
 UNSPEC_SHA1SU0, UNSPEC_SHA1SU1, UNSPEC_SHA256H, UNSPEC_SHA256H2,
 UNSPEC_SHA256SU0, UNSPEC_SHA256SU1, VMULLP64): Define.
 * config/arm/arm_neon.h: Regenerate.

From-SVN: r206130
13 files changed:
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md
gcc/config/arm/arm_neon.h
gcc/config/arm/arm_neon_builtins.def
gcc/config/arm/crypto.def [new file with mode: 0644]
gcc/config/arm/crypto.md [new file with mode: 0644]
gcc/config/arm/iterators.md
gcc/config/arm/neon-gen.ml
gcc/config/arm/neon.md
gcc/config/arm/neon.ml
gcc/config/arm/unspecs.md