diff options
author | Kyrylo Tkachov <kyrylo.tkachov@arm.com> | 2014-01-10 11:43:48 +0000 |
---|---|---|
committer | Kyrylo Tkachov <ktkachov@gcc.gnu.org> | 2014-01-10 11:43:48 +0000 |
commit | 4b6af762b4c37c69ec3fe8983698a2a0b54bf84b (patch) | |
tree | e24b64b114a76ea30610a621f6d5f7b9dc92b19e | |
parent | bcca645ce18d920deb1912011b7b1652549f1497 (diff) | |
download | gcc-4b6af762b4c37c69ec3fe8983698a2a0b54bf84b.zip gcc-4b6af762b4c37c69ec3fe8983698a2a0b54bf84b.tar.gz gcc-4b6af762b4c37c69ec3fe8983698a2a0b54bf84b.tar.bz2 |
[gcc/testsuite/]
2014-01-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* lib/target-supports.exp
(check_effective_target_arm_crypto_ok_nocache): New.
(check_effective_target_arm_crypto_ok): Use above procedure.
(add_options_for_arm_crypto): Use et_arm_crypto_flags.
From-SVN: r206519
-rw-r--r-- | gcc/testsuite/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/testsuite/lib/target-supports.exp | 43 |
2 files changed, 38 insertions, 12 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index eaf5348..2e3b11d 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2014-01-10 Kyrylo Tkachov <kyrylo.tkachov@arm.com> + + * lib/target-supports.exp + (check_effective_target_arm_crypto_ok_nocache): New. + (check_effective_target_arm_crypto_ok): Use above procedure. + (add_options_for_arm_crypto): Use et_arm_crypto_flags. + 2014-01-10 Jan Hubicka <hubicka@ucw.cz> PR ipa/58252 diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index 9536008..159f88f 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -2311,19 +2311,37 @@ proc check_effective_target_arm_unaligned { } { } # Return 1 if this is an ARM target supporting -mfpu=crypto-neon-fp-armv8 -# -mfloat-abi=softfp. -proc check_effective_target_arm_crypto_ok {} { +# -mfloat-abi=softfp or equivalent options. Some multilibs may be +# incompatible with these options. Also set et_arm_crypto_flags to the +# best options to add. + +proc check_effective_target_arm_crypto_ok_nocache { } { + global et_arm_crypto_flags + set et_arm_crypto_flags "" if { [check_effective_target_arm32] } { - return [check_no_compiler_messages arm_crypto_ok object { - int foo (void) - { - __asm__ volatile ("aese.8 q0, q0"); - return 0; - } - } "-mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp"] - } else { - return 0 + foreach flags {"" "-mfloat-abi=softfp" "-mfpu=crypto-neon-fp-armv8" "-mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp"} { + if { [check_no_compiler_messages_nocache arm_crypto_ok object { + #include "arm_neon.h" + uint8x16_t + foo (uint8x16_t a, uint8x16_t b) + { + return vaeseq_u8 (a, b); + } + } "$flags"] } { + set et_arm_crypto_flags $flags + return 1 + } + } } + + return 0 +} + +# Return 1 if this is an ARM target supporting -mfpu=crypto-neon-fp-armv8 + +proc check_effective_target_arm_crypto_ok { } { + return [check_cached_effective_target arm_crypto_ok \ + check_effective_target_arm_crypto_ok_nocache] } # Add options for crypto extensions. @@ -2331,7 +2349,8 @@ proc add_options_for_arm_crypto { flags } { if { ! [check_effective_target_arm_crypto_ok] } { return "$flags" } - return "$flags -mfpu=crypto-neon-fp-armv8 -mfloat-abi=softfp" + global et_arm_crypto_flags + return "$flags $et_arm_crypto_flags" } # Add the options needed for NEON. We need either -mfloat-abi=softfp |