[AArch64] Skip gcc.target/aarch64/assembler_arch_1.c if assembler does not support it
authorktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Feb 2016 14:20:27 +0000 (14:20 +0000)
committerktkachov <ktkachov@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 19 Feb 2016 14:20:27 +0000 (14:20 +0000)
* lib/target-supports.exp: Define aarch64_asm_FUNC_ok checks
for fp, simd, crypto, crc, lse.
* doc/sourcebuild.texi (AArch64-specific attributes): Document the
above.
* gcc.target/aarch64/assembler_arch_1.c: Add aarch64_asm_lse_ok
effective target check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@233559 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/doc/sourcebuild.texi
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/assembler_arch_1.c
gcc/testsuite/lib/target-supports.exp

index 6d548aa..c5354cf 100644 (file)
@@ -1606,6 +1606,9 @@ ARM target prefers @code{LDRD} and @code{STRD} instructions over
 @subsubsection AArch64-specific attributes
 
 @table @code
+@item aarch64_asm_<ext>_ok
+AArch64 assembler supports the architecture extension @code{ext} via the
+@code{.arch_extension} pseudo-op.
 @item aarch64_tiny
 AArch64 target which generates instruction sequences for tiny memory model.
 @item aarch64_small
index 365ec1f..604bb3c 100644 (file)
@@ -1,3 +1,12 @@
+2016-02-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+
+       * lib/target-supports.exp: Define aarch64_asm_FUNC_ok checks
+       for fp, simd, crypto, crc, lse.
+       * doc/sourcebuild.texi (AArch64-specific attributes): Document the
+       above.
+       * gcc.target/aarch64/assembler_arch_1.c: Add aarch64_asm_lse_ok
+       effective target check.
+
 2016-02-19  Jakub Jelinek  <jakub@redhat.com>
 
        PR target/69820
index 901e50a..5deea5c 100644 (file)
@@ -1,4 +1,5 @@
 /* { dg-do assemble } */
+/* { dg-require-effective-target aarch64_asm_lse_ok } */
 /* { dg-options "-march=armv8-a" } */
 
 /* Make sure that the function header in assembly doesn't override
index 66fb1ea..0b4252f 100644 (file)
@@ -6719,6 +6719,23 @@ proc check_effective_target_aarch64_tiny { } {
     }
 }
 
+# Create functions to check that the AArch64 assembler supports the
+# various architecture extensions via the .arch_extension pseudo-op.
+
+foreach { aarch64_ext } { "fp" "simd" "crypto" "crc" "lse"} {
+    eval [string map [list FUNC $aarch64_ext] {
+       proc check_effective_target_aarch64_asm_FUNC_ok { } {
+         if { [istarget aarch64*-*-*] } {
+               return [check_no_compiler_messages aarch64_FUNC_assembler object {
+                       __asm__ (".arch_extension FUNC");
+               } "-march=armv8-a+FUNC"]
+         } else {
+               return 0
+         }
+       }
+    }]
+}
+
 proc check_effective_target_aarch64_small { } {
     if { [istarget aarch64*-*-*] } {
        return [check_no_compiler_messages aarch64_small object {