aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKyrylo Tkachov <kyrylo.tkachov@arm.com>2014-01-10 11:43:48 +0000
committerKyrylo Tkachov <ktkachov@gcc.gnu.org>2014-01-10 11:43:48 +0000
commit4b6af762b4c37c69ec3fe8983698a2a0b54bf84b (patch)
treee24b64b114a76ea30610a621f6d5f7b9dc92b19e
parentbcca645ce18d920deb1912011b7b1652549f1497 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/testsuite/lib/target-supports.exp43
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