diff options
author | Matthew Gretton-Dann <matthew.gretton-dann@arm.com> | 2012-06-25 16:30:53 +0000 |
---|---|---|
committer | Matthew Gretton-Dann <mgretton@gcc.gnu.org> | 2012-06-25 16:30:53 +0000 |
commit | 9e94a7fc5ab770928b9e6a2b74e292d35b4c94da (patch) | |
tree | 0026d4a6c28abfd39e7c570714efb1913bb50200 /gcc/testsuite/gcc.target | |
parent | 25bab91e017eb1d6d93117f3da96fa9b43703190 (diff) | |
download | gcc-9e94a7fc5ab770928b9e6a2b74e292d35b4c94da.zip gcc-9e94a7fc5ab770928b9e6a2b74e292d35b4c94da.tar.gz gcc-9e94a7fc5ab770928b9e6a2b74e292d35b4c94da.tar.bz2 |
arm.h (TARGET_CPU_CPP_BUILTINS): Add new built-ins.
2012-05-25 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
James Greenhalgh <james.greenhalgh@arm.com>
* gcc/config/arm/arm.h (TARGET_CPU_CPP_BUILTINS): Add new built-ins.
(TARGET_FMA): New macro.
(TARGET_ARM_QBIT, TARGET_ARM_SAT): Likewise.
(TARGET_ARM_ARCH): Likewise.
(TARGET_ARM_ARCH_ISA_THUMB): Likewise.
(TARGET_V6M, TARGET_V7M): Likewise.
(TARGET_ARM_ARCH_PROFILE): Likewise.
(TARGET_ARM_FEATURE_LDREX): Likewise.
(TARGET_ARM_FP, TARGET_NEON_FP): Likewise.
(ARM_MIN_ENUM_SIZE): Likewise.
* gcc/config/arm/arm.c (arm_file_start): Refactor appropriately.
(base_architecture): New enumeration.
(arm_base_arch): New global variable.
(processors): Add field base_arch.
(ARM_ARCH, ARM_CORE): Adjust accordingly.
(arm_option_override): Add initialization of arm_base_arch.
* gcc/doc/cpp.texi (system-specific predefined macros.): Change.
* gcc/testsuite/gcc.target/arm/ftest-support-arm.h New testcase.
* gcc/testsuite/gcc.target/arm/ftest-support-thumb.h Likewise.
* gcc/testsuite/gcc.target/arm/ftest-support.h Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c: Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c Likewise.
* gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c Likewise.
* gcc/testsuite/lib/target-supports.exp
(check_effective_target_arm_arch_FUNC): Add support for more
architectures.
(add_options_for_arm_arch_FUNC): Likewise.
(check_effective_target_arm_arch_FUNC_multilib): New functions.
Co-Authored-By: James Greenhalgh <james.greenhalgh@arm.com>
From-SVN: r188946
Diffstat (limited to 'gcc/testsuite/gcc.target')
25 files changed, 449 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c new file mode 100644 index 0000000..acaf72e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv4-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v4_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v4 } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V4); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c new file mode 100644 index 0000000..7af6167 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv4t-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v4t_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v4t } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V4T); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c new file mode 100644 index 0000000..1e6a2da --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv4t-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v4t_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v4t } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V4T); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c new file mode 100644 index 0000000..cc7fc71 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv5t-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v5t_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v5t } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V5T); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c new file mode 100644 index 0000000..b2b4727 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv5t-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v5t_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v5t } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V5T); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c new file mode 100644 index 0000000..7595e19 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv5te-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v5te_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v5te } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V5TE); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c new file mode 100644 index 0000000..a18ea52 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv5te-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v5te_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v5te } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V5TE); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c new file mode 100644 index 0000000..465d187 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v6_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v6 } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V6); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c new file mode 100644 index 0000000..0445587 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v6_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v6 } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V6); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c new file mode 100644 index 0000000..c059b77 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6k-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v6k_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v6k } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V6K); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c new file mode 100644 index 0000000..8f19587 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6k-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v6k_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v6k } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V6K); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c new file mode 100644 index 0000000..1042761 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6m-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v6m_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v6m } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V6M); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c new file mode 100644 index 0000000..5f7f874 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v6t2_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v6t2 } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V6T2); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c new file mode 100644 index 0000000..e3695c4 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6t2-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v6t2_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v6t2 } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V6T2); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c new file mode 100644 index 0000000..0797890 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6z-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v6z_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v6z } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V6Z); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c new file mode 100644 index 0000000..c5a2e49 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv6z-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v6z_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v6z } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V6Z); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c new file mode 100644 index 0000000..e84559a --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv7a-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v7a_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v7a } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V7A); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c new file mode 100644 index 0000000..ad9b4e3 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv7a-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v7a_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v7a } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V7A); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c new file mode 100644 index 0000000..7ef9210 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv7em-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v7em_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v7em } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V7EM); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c new file mode 100644 index 0000000..8bf875e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv7m-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v7m_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v7m } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V7M); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c b/gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c new file mode 100644 index 0000000..4422564 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv7r-arm.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_nothumb } */ +/* { dg-require-effective-target arm_arch_v7r_multilib } */ +/* { dg-options "-marm" } */ +/* { dg-add-options arm_arch_v7r } */ + +#include "ftest-support-arm.h" + +int +main (void) +{ + return ftest (ARCH_V7R); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c b/gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c new file mode 100644 index 0000000..da866e4 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-armv7r-thumb.c @@ -0,0 +1,14 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_eabi } */ +/* { dg-require-effective-target arm_arch_v7r_multilib } */ +/* { dg-options "-mthumb" } */ +/* { dg-add-options arm_arch_v7r } */ + +#include "ftest-support-thumb.h" + +int +main (void) +{ + return ftest (ARCH_V7R); +} + diff --git a/gcc/testsuite/gcc.target/arm/ftest-support-arm.h b/gcc/testsuite/gcc.target/arm/ftest-support-arm.h new file mode 100644 index 0000000..512d50e --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-support-arm.h @@ -0,0 +1,29 @@ +#include "ftest-support.h" + + /*Feature matrix layout: + __ARM_ARCH + __ARM_ARCH_ISA_ARM + __ARM_ARCH_ISA_THUMB + __ARM_ARCH_PROFILE + __ARM_FEATURE_UNALIGNED + __ARM_FEATURE_LDREX + __ARM_FEATURE_CLZ + __ARM_FEATURE_DSP + __ARM_FEATURE_SIMD32 + __ARM_FEATURE_QBIT + __ARM_FEATURE_SAT + */ +int feature_matrix[ARCH_COUNT][NUM_FEATURES] = + {{4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4. */ + {4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4T. */ + {5, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0}, /* ARCH_V5T. */ + {5, 1, 1, 0, 0, 0, 1, 1, 0, 1, 0}, /* ARCH_V5TE. */ + {6, 1, 1, 0, 1, 4, 1, 1, 1, 1, 1}, /* ARCH_V6. */ + {6, 1, 1, 0, 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V6K. */ + {6, 1, 2, 0, 1, 4, 1, 1, 1, 1, 1}, /* ARCH_V6T2. */ + {6, 1, 1, 0, 1, 4, 1, 1, 1, 1, 1}, /* ARCH_V6Z. */ + {6, 0, 1, 'M', 0, 0, 1, 0, 0, 0, 0}, /* ARCH_V6M. */ + {7, 1, 2, 'A', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7A. */ + {7, 1, 2, 'R', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7R. */ + {7, 0, 2, 'M', 1, 7, 1, 0, 0, 1, 1}, /* ARCH_V7M. */ + {7, 0, 2, 'M', 1, 7, 1, 1, 0, 1, 1}}; /* ARCH_V7EM. */ diff --git a/gcc/testsuite/gcc.target/arm/ftest-support-thumb.h b/gcc/testsuite/gcc.target/arm/ftest-support-thumb.h new file mode 100644 index 0000000..9991831 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-support-thumb.h @@ -0,0 +1,29 @@ +#include "ftest-support.h" + + /*Feature matrix layout: + __ARM_ARCH + __ARM_ARCH_ISA_ARM + __ARM_ARCH_ISA_THUMB + __ARM_ARCH_PROFILE + __ARM_FEATURE_UNALIGNED + __ARM_FEATURE_LDREX + __ARM_FEATURE_CLZ + __ARM_FEATURE_DSP + __ARM_FEATURE_SIMD32 + __ARM_FEATURE_QBIT + __ARM_FEATURE_SAT + */ +int feature_matrix[ARCH_COUNT][NUM_FEATURES] = + {{4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4. */ + {4, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V4T. */ + {5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V5T. */ + {5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V5TE. */ + {6, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0}, /* ARCH_V6. */ + {6, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0}, /* ARCH_V6K. */ + {6, 1, 2, 0, 1, 0, 1, 1, 1, 1, 1}, /* ARCH_V6T2. */ + {6, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0}, /* ARCH_V6Z. */ + {6, 0, 1, 'M', 0, 0, 0, 0, 0, 0, 0}, /* ARCH_V6M. */ + {7, 1, 2, 'A', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7A. */ + {7, 1, 2, 'R', 1, 15, 1, 1, 1, 1, 1}, /* ARCH_V7R. */ + {7, 0, 2, 'M', 1, 7, 1, 0, 0, 1, 1}, /* ARCH_V7M. */ + {7, 0, 2, 'M', 1, 7, 1, 1, 1, 1, 1}}; /* ARCH_V7EM. */ diff --git a/gcc/testsuite/gcc.target/arm/ftest-support.h b/gcc/testsuite/gcc.target/arm/ftest-support.h new file mode 100644 index 0000000..c5f9810 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/ftest-support.h @@ -0,0 +1,83 @@ +#if 0 +#define INTERNAL_DEBUG 1 +#endif + +#ifdef INTERNAL_DEBUG +#include <stdio.h> +#endif + +extern void abort (void); + +enum architecture { + ARCH_V4 = 0, + ARCH_V4T, + ARCH_V5T, + ARCH_V5TE, + ARCH_V6, + ARCH_V6K, + ARCH_V6T2, + ARCH_V6Z, + ARCH_V6M, + ARCH_V7A, + ARCH_V7R, + ARCH_V7M, + ARCH_V7EM, + ARCH_COUNT +}; + +#define NUM_FEATURES 11 +int feature_matrix[ARCH_COUNT][NUM_FEATURES]; + +int +ftest (int arch) +{ + int features[NUM_FEATURES] = {0}; + int y; + + for (y = 0; y < NUM_FEATURES; ++y) + features[y] = 0; + +#ifdef __ARM_ARCH + features[0] = __ARM_ARCH; +#endif +#ifdef __ARM_ARCH_ISA_ARM + features[1] = __ARM_ARCH_ISA_ARM; +#endif +#ifdef __ARM_ARCH_ISA_THUMB + features[2] = __ARM_ARCH_ISA_THUMB; +#endif +#ifdef __ARM_ARCH_PROFILE + features[3] = __ARM_ARCH_PROFILE; +#endif +#ifdef __ARM_FEATURE_UNALIGNED + features[4] = __ARM_FEATURE_UNALIGNED; +#endif +#ifdef __ARM_FEATURE_LDREX + features[5] = __ARM_FEATURE_LDREX; +#endif +#ifdef __ARM_FEATURE_CLZ + features[6] = __ARM_FEATURE_CLZ; +#endif +#ifdef __ARM_FEATURE_DSP + features[7] = __ARM_FEATURE_DSP; +#endif +#ifdef __ARM_FEATURE_SIMD32 + features[8] = __ARM_FEATURE_SIMD32; +#endif +#ifdef __ARM_FEATURE_QBIT + features[9] = __ARM_FEATURE_QBIT; +#endif +#ifdef __ARM_FEATURE_SAT + features[10] = __ARM_FEATURE_SAT; +#endif + for (y = 0; y < NUM_FEATURES; ++y) + if (feature_matrix[arch][y] != features[y]) + { +#ifdef INTERNAL_DEBUG + printf ("%d, %d, %d, %d\n", arch, y, feature_matrix[arch][y], features[y]); +#endif + abort (); + } + return 0; +} + |