From patchwork Thu May 17 10:26:51 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyrill Tkachov X-Patchwork-Id: 915309 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-477833-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=foss.arm.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="CbqShN5h"; dkim-atps=neutral Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 40mnY91yBhz9s3B for ; Thu, 17 May 2018 20:27:08 +1000 (AEST) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; q=dns; s=default; b=BfvIkfZh64fp6LDOInRpiTOZq6bb7kbgBxzR6Rvq2sS B6knCByFa0a1dGafXGMr+PIve+i53RokZSoXVjNbA1gQz05IUylThCwkQN4Dn+hd EJ4w7fThBaO0C3x5miK3QCPV1ClgU3UB1pjncciVrWmQS9F5NTS7Q/4/3yMZfPKU = DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:cc:subject:content-type; s=default; bh=NZnQFznbLl0ABIB8/k8/oOHVQh0=; b=CbqShN5h6cOExioCG un74l+w6ss1oUpG7uLv4PAA5qNms/NDNnKEiiYG4Rla5wzxq9yDEtW0EnprSbcNt 3J8fh10Ckka29hiPNcZkxmw9QCDsVKP8yUTLepriXRT34xXXdXany/L3OAfdi4n1 /AgS7vbePlu9Npx9R451NM9Rgw= Received: (qmail 61015 invoked by alias); 17 May 2018 10:26:59 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 61004 invoked by uid 89); 17 May 2018 10:26:59 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, KAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH, KAM_SHORT, KAM_STOCKGEN autolearn=ham version=3.3.2 spammy=relating, am, minus, sk:peep2_r X-HELO: foss.arm.com Received: from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com) (217.140.101.70) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 17 May 2018 10:26:55 +0000 Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 5EB8D1435; Thu, 17 May 2018 03:26:53 -0700 (PDT) Received: from [10.2.207.77] (e100706-lin.cambridge.arm.com [10.2.207.77]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6E5DF3F25D; Thu, 17 May 2018 03:26:52 -0700 (PDT) Message-ID: <5AFD58EB.70204@foss.arm.com> Date: Thu, 17 May 2018 11:26:51 +0100 From: Kyrill Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: "Richard Earnshaw (lists)" , Ramana Radhakrishnan Subject: [PATCH][arm][1/2] Remove support for deprecated -march=armv5 and armv5e Hi all, The -march=armv5 and armv5e options have been deprecated in GCC 7 [1]. This patch removes support for them. It's mostly mechanical stuff. The functionality that was previously gated on arm_arch5 is now gated on arm_arch5t and the functionality that was gated on arm_arch5e is now gated on arm_arch5te. A path in TARGET_OS_CPP_BUILTINS for VxWorks is now unreachable and therefore is deleted. References to armv5 and armv5e are deleted/updated throughout the source tree and testsuite. Bootstrapped and tested on arm-none-linux-gnueabihf. Also built a cc1 for arm-wrs-vxworks as a sanity check. Ramana, Richard, I'd appreciate an ok from either of you that you're happy for this to go ahead. Thanks, Kyrill [1] https://gcc.gnu.org/gcc-7/changes.html#arm gcc/ 2018-05-17 Kyrylo Tkachov * config/arm/arm-cpus.in (armv5, armv5e): Delete features. (armv5t, armv5te): New features. (ARMv5, ARMv5e): Delete fgroups. (ARMv5t, ARMv5te): Adjust for above changes. (ARMv6m): Likewise. (armv5, armv5e): Delete arches. * config/arm/arm.md (*call_reg_armv5): Use arm_arch5t instead of arm_arch5. (*call_reg_arm): Likewise. (*call_value_reg_armv5): Likewise. (*call_value_reg_arm): Likewise. (*call_symbol): Likewise. (*call_value_symbol): Likewise. (*sibcall_insn): Likewise. (*sibcall_value_insn): Likewise. (clzsi2): Likewise. (prefetch): Likewise. (define_split and define_peephole2 dependent on arm_arch5): Likewise. * config/arm/arm.h (TARGET_LDRD): Use arm_arch5te instead of arm_arch5e. (TARGET_ARM_QBIT): Likewise. (TARGET_DSP_MULTIPLY): Likewise. (enum base_architecture): Delete BASE_ARCH_5, BASE_ARCH_5E. (arm_arch5, arm_arch5e): Delete. (arm_arch5t, arm_arch5te): Declare. * config/arm/arm.c (arm_arch5, arm_arch5e): Delete. (arm_arch5t): Declare. (arm_option_reconfigure_globals): Update for the above. (arm_options_perform_arch_sanity_checks): Update comment, replace use of arm_arch5 with arm_arch5t. (use_return_insn): Likewise. (arm_emit_call_insn): Likewise. (output_return_instruction): Likewise. (arm_final_prescan_insn): Likewise. (arm_coproc_builtin_available): Likewise. * config/arm/arm-c.c (arm_cpu_builtins): Replace arm_arch5 and arm_arch5e with arm_arch5t and arm_arch5te. * config/arm/arm-protos.h (arm_arch5, arm_arch5e): Delete. (arm_arch5t, arm_arch5te): Declare. * config/arm/arm-tables.opt: Regenerate. * config/arm/t-arm-elf: Remove references to armv5, armv5e. * config/arm/t-multilib: Likewise. * config/arm/thumb1.md (*call_reg_thumb1_v5): Check arm_arch5t instead of arm_arch5. (*call_reg_thumb1): Likewise. (*call_value_reg_thumb1_v5): Likewise. (*call_value_reg_thumb1): Likewise. * config/arm/vxworks.h (TARGET_OS_CPP_BUILTINS): Remove now unreachable path. * doc/invoke.texi (ARM Options): Remove references to armv5, armv5e. gcc/testsuite/ 2018-05-17 Kyrylo Tkachov * gcc.target/arm/pr40887.c: Update comment. * lib/target-supports.exp: Don't generate effective target checks and related helpers for armv5. Update comment. * gcc.target/arm/armv5_thumb_isa.c: Delete. * gcc.target/arm/di-longlong64-sync-withhelpers.c: Update effective target check and options. libgcc/ 2018-05-17 Kyrylo Tkachov * config/arm/libunwind.S: Update comment relating to armv5. diff --git a/gcc/config/arm/arm-c.c b/gcc/config/arm/arm-c.c index 7c741e9fe66a0e086556272a46c4cd709996ce36..4471f7914cf282c516a142174f9913e491558b44 100644 --- a/gcc/config/arm/arm-c.c +++ b/gcc/config/arm/arm-c.c @@ -212,9 +212,9 @@ arm_cpu_builtins (struct cpp_reader* pfile) { int coproc_level = 0x1; - if (arm_arch5) + if (arm_arch5t) coproc_level |= 0x2; - if (arm_arch5e) + if (arm_arch5te) coproc_level |= 0x4; if (arm_arch6) coproc_level |= 0x8; diff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in index 96972a057e7459874ef0bdac5e6379fb666e4189..0a318877f10394e2c045d2a03a8f0757557136cf 100644 --- a/gcc/config/arm/arm-cpus.in +++ b/gcc/config/arm/arm-cpus.in @@ -60,14 +60,14 @@ define feature mode32 # Architecture rel 4 define feature armv4 -# Architecture rel 5 -define feature armv5 - # Thumb aware. define feature thumb -# Architecture rel 5e. -define feature armv5e +# Architecture rel 5t. +define feature armv5t + +# Architecture rel 5te. +define feature armv5te # XScale. define feature xscale @@ -220,10 +220,8 @@ define fgroup ARMv3 ARMv2 mode32 define fgroup ARMv3m ARMv3 armv3m define fgroup ARMv4 ARMv3m armv4 define fgroup ARMv4t ARMv4 thumb -define fgroup ARMv5 ARMv4 armv5 -define fgroup ARMv5t ARMv5 thumb -define fgroup ARMv5e ARMv5 armv5e -define fgroup ARMv5te ARMv5e thumb +define fgroup ARMv5t ARMv4t armv5t +define fgroup ARMv5te ARMv5t armv5te define fgroup ARMv5tej ARMv5te define fgroup ARMv6 ARMv5te armv6 be8 define fgroup ARMv6j ARMv6 @@ -234,7 +232,7 @@ define fgroup ARMv6zk ARMv6k define fgroup ARMv6t2 ARMv6 thumb2 # This is suspect. ARMv6-m doesn't really pull in any useful features # from ARMv5* or ARMv6. -define fgroup ARMv6m mode32 armv3m armv4 thumb armv5 armv5e armv6 be8 +define fgroup ARMv6m mode32 armv3m armv4 thumb armv5t armv5te armv6 be8 # This is suspect, the 'common' ARMv7 subset excludes the thumb2 'DSP' and # integer SIMD instructions that are in ARMv6T2. */ define fgroup ARMv7 ARMv6m thumb2 armv7 @@ -325,13 +323,6 @@ begin arch armv4t isa ARMv4t end arch armv4t -begin arch armv5 - tune for arm10tdmi - tune flags CO_PROC - base 5 - isa ARMv5 -end arch armv5 - begin arch armv5t tune for arm10tdmi tune flags CO_PROC @@ -339,16 +330,6 @@ begin arch armv5t isa ARMv5t end arch armv5t -begin arch armv5e - tune for arm1026ej-s - tune flags CO_PROC - base 5E - isa ARMv5e - option fp add VFPv2 FP_DBL - optalias vfpv2 fp - option nofp remove ALL_FP -end arch armv5e - begin arch armv5te tune for arm1026ej-s tune flags CO_PROC diff --git a/gcc/config/arm/arm-protos.h b/gcc/config/arm/arm-protos.h index 9d0acde7a392561cb195d02ae2e1daa15f4ce95b..ea2cf694f2fc6a7337accb0a7f7044fc99a7630d 100644 --- a/gcc/config/arm/arm-protos.h +++ b/gcc/config/arm/arm-protos.h @@ -388,11 +388,11 @@ extern int arm_arch4; /* Nonzero if this chip supports the ARM Architecture 4t extensions. */ extern int arm_arch4t; -/* Nonzero if this chip supports the ARM Architecture 5 extensions. */ -extern int arm_arch5; +/* Nonzero if this chip supports the ARM Architecture 5t extensions. */ +extern int arm_arch5t; -/* Nonzero if this chip supports the ARM Architecture 5E extensions. */ -extern int arm_arch5e; +/* Nonzero if this chip supports the ARM Architecture 5te extensions. */ +extern int arm_arch5te; /* Nonzero if this chip supports the ARM Architecture 6 extensions. */ extern int arm_arch6; diff --git a/gcc/config/arm/arm-tables.opt b/gcc/config/arm/arm-tables.opt index 60e5065b398f40bf969a53fd063d263908b0818e..b05da649ac580655142cb8f27adf8717d135b911 100644 --- a/gcc/config/arm/arm-tables.opt +++ b/gcc/config/arm/arm-tables.opt @@ -383,94 +383,88 @@ EnumValue Enum(arm_arch) String(armv4t) Value(5) EnumValue -Enum(arm_arch) String(armv5) Value(6) +Enum(arm_arch) String(armv5t) Value(6) EnumValue -Enum(arm_arch) String(armv5t) Value(7) +Enum(arm_arch) String(armv5te) Value(7) EnumValue -Enum(arm_arch) String(armv5e) Value(8) +Enum(arm_arch) String(armv5tej) Value(8) EnumValue -Enum(arm_arch) String(armv5te) Value(9) +Enum(arm_arch) String(armv6) Value(9) EnumValue -Enum(arm_arch) String(armv5tej) Value(10) +Enum(arm_arch) String(armv6j) Value(10) EnumValue -Enum(arm_arch) String(armv6) Value(11) +Enum(arm_arch) String(armv6k) Value(11) EnumValue -Enum(arm_arch) String(armv6j) Value(12) +Enum(arm_arch) String(armv6z) Value(12) EnumValue -Enum(arm_arch) String(armv6k) Value(13) +Enum(arm_arch) String(armv6kz) Value(13) EnumValue -Enum(arm_arch) String(armv6z) Value(14) +Enum(arm_arch) String(armv6zk) Value(14) EnumValue -Enum(arm_arch) String(armv6kz) Value(15) +Enum(arm_arch) String(armv6t2) Value(15) EnumValue -Enum(arm_arch) String(armv6zk) Value(16) +Enum(arm_arch) String(armv6-m) Value(16) EnumValue -Enum(arm_arch) String(armv6t2) Value(17) +Enum(arm_arch) String(armv6s-m) Value(17) EnumValue -Enum(arm_arch) String(armv6-m) Value(18) +Enum(arm_arch) String(armv7) Value(18) EnumValue -Enum(arm_arch) String(armv6s-m) Value(19) +Enum(arm_arch) String(armv7-a) Value(19) EnumValue -Enum(arm_arch) String(armv7) Value(20) +Enum(arm_arch) String(armv7ve) Value(20) EnumValue -Enum(arm_arch) String(armv7-a) Value(21) +Enum(arm_arch) String(armv7-r) Value(21) EnumValue -Enum(arm_arch) String(armv7ve) Value(22) +Enum(arm_arch) String(armv7-m) Value(22) EnumValue -Enum(arm_arch) String(armv7-r) Value(23) +Enum(arm_arch) String(armv7e-m) Value(23) EnumValue -Enum(arm_arch) String(armv7-m) Value(24) +Enum(arm_arch) String(armv8-a) Value(24) EnumValue -Enum(arm_arch) String(armv7e-m) Value(25) +Enum(arm_arch) String(armv8.1-a) Value(25) EnumValue -Enum(arm_arch) String(armv8-a) Value(26) +Enum(arm_arch) String(armv8.2-a) Value(26) EnumValue -Enum(arm_arch) String(armv8.1-a) Value(27) +Enum(arm_arch) String(armv8.3-a) Value(27) EnumValue -Enum(arm_arch) String(armv8.2-a) Value(28) +Enum(arm_arch) String(armv8.4-a) Value(28) EnumValue -Enum(arm_arch) String(armv8.3-a) Value(29) +Enum(arm_arch) String(armv8-m.base) Value(29) EnumValue -Enum(arm_arch) String(armv8.4-a) Value(30) +Enum(arm_arch) String(armv8-m.main) Value(30) EnumValue -Enum(arm_arch) String(armv8-m.base) Value(31) +Enum(arm_arch) String(armv8-r) Value(31) EnumValue -Enum(arm_arch) String(armv8-m.main) Value(32) +Enum(arm_arch) String(iwmmxt) Value(32) EnumValue -Enum(arm_arch) String(armv8-r) Value(33) - -EnumValue -Enum(arm_arch) String(iwmmxt) Value(34) - -EnumValue -Enum(arm_arch) String(iwmmxt2) Value(35) +Enum(arm_arch) String(iwmmxt2) Value(33) Enum Name(arm_fpu) Type(enum fpu_type) diff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h index 2809112f68dd83eeb5b4764e82d552d8b8be3e4e..f3a6f7db95ef4806ea0677babe503cd9d62d40a3 100644 --- a/gcc/config/arm/arm.h +++ b/gcc/config/arm/arm.h @@ -155,7 +155,7 @@ extern tree arm_fp16_type_node; /* Thumb-1 only. */ #define TARGET_THUMB1_ONLY (TARGET_THUMB1 && !arm_arch_notm) -#define TARGET_LDRD (arm_arch5e && ARM_DOUBLEWORD_ALIGN \ +#define TARGET_LDRD (arm_arch5te && ARM_DOUBLEWORD_ALIGN \ && !TARGET_THUMB1) #define TARGET_CRC32 (arm_arch_crc) @@ -233,13 +233,13 @@ extern tree arm_fp16_type_node; /* Q-bit is present. */ #define TARGET_ARM_QBIT \ - (TARGET_32BIT && arm_arch5e && (arm_arch_notm || arm_arch7)) + (TARGET_32BIT && arm_arch5te && (arm_arch_notm || arm_arch7)) /* Saturation operation, e.g. SSAT. */ #define TARGET_ARM_SAT \ (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7)) /* "DSP" multiply instructions, eg. SMULxy. */ #define TARGET_DSP_MULTIPLY \ - (TARGET_32BIT && arm_arch5e && (arm_arch_notm || arm_arch7em)) + (TARGET_32BIT && arm_arch5te && (arm_arch_notm || arm_arch7em)) /* Integer SIMD instructions, and extend-accumulate instructions. */ #define TARGET_INT_SIMD \ (TARGET_32BIT && arm_arch6 && (arm_arch_notm || arm_arch7em)) @@ -375,8 +375,6 @@ enum base_architecture BASE_ARCH_3M = 3, BASE_ARCH_4 = 4, BASE_ARCH_4T = 4, - BASE_ARCH_5 = 5, - BASE_ARCH_5E = 5, BASE_ARCH_5T = 5, BASE_ARCH_5TE = 5, BASE_ARCH_5TEJ = 5, @@ -410,11 +408,11 @@ extern int arm_arch4; /* Nonzero if this chip supports the ARM Architecture 4T extensions. */ extern int arm_arch4t; -/* Nonzero if this chip supports the ARM Architecture 5 extensions. */ -extern int arm_arch5; +/* Nonzero if this chip supports the ARM Architecture 5T extensions. */ +extern int arm_arch5t; -/* Nonzero if this chip supports the ARM Architecture 5E extensions. */ -extern int arm_arch5e; +/* Nonzero if this chip supports the ARM Architecture 5TE extensions. */ +extern int arm_arch5te; /* Nonzero if this chip supports the ARM Architecture 6 extensions. */ extern int arm_arch6; diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 08120c6272b5c558e60016c2bd8901b274a45af8..3bfc0d5ec0e8e455a169d595d1f1c926c4ac349b 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -859,11 +859,8 @@ int arm_arch4 = 0; /* Nonzero if this chip supports the ARM Architecture 4t extensions. */ int arm_arch4t = 0; -/* Nonzero if this chip supports the ARM Architecture 5 extensions. */ -int arm_arch5 = 0; - -/* Nonzero if this chip supports the ARM Architecture 5E extensions. */ -int arm_arch5e = 0; +/* Nonzero if this chip supports the ARM Architecture 5T extensions. */ +int arm_arch5t = 0; /* Nonzero if this chip supports the ARM Architecture 5TE extensions. */ int arm_arch5te = 0; @@ -3642,10 +3639,8 @@ arm_option_reconfigure_globals (void) arm_arch3m = bitmap_bit_p (arm_active_target.isa, isa_bit_armv3m); arm_arch4 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv4); arm_arch4t = arm_arch4 && bitmap_bit_p (arm_active_target.isa, isa_bit_thumb); - arm_arch5 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5); - arm_arch5e = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5e); - arm_arch5te = arm_arch5e - && bitmap_bit_p (arm_active_target.isa, isa_bit_thumb); + arm_arch5t = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5t); + arm_arch5te = bitmap_bit_p (arm_active_target.isa, isa_bit_armv5te); arm_arch6 = bitmap_bit_p (arm_active_target.isa, isa_bit_armv6); arm_arch6k = bitmap_bit_p (arm_active_target.isa, isa_bit_armv6k); arm_arch_notm = bitmap_bit_p (arm_active_target.isa, isa_bit_notm); @@ -3694,7 +3689,7 @@ arm_option_reconfigure_globals (void) void arm_options_perform_arch_sanity_checks (void) { - /* V5 code we generate is completely interworking capable, so we turn off + /* V5T code we generate is completely interworking capable, so we turn off TARGET_INTERWORK here to avoid many tests later on. */ /* XXX However, we must pass the right pre-processor defines to CPP @@ -3702,7 +3697,7 @@ arm_options_perform_arch_sanity_checks (void) if (TARGET_INTERWORK) arm_cpp_interwork = 1; - if (arm_arch5) + if (arm_arch5t) target_flags &= ~MASK_INTERWORK; if (TARGET_IWMMXT && !ARM_DOUBLEWORD_ALIGN) @@ -4061,10 +4056,10 @@ use_return_insn (int iscond, rtx sibling) the other registers, since that is never slower than executing another instruction. - We test for !arm_arch5 here, because code for any architecture + We test for !arm_arch5t here, because code for any architecture less than this could potentially be run on one of the buggy chips. */ - if (stack_adjust == 4 && !arm_arch5 && TARGET_ARM) + if (stack_adjust == 4 && !arm_arch5t && TARGET_ARM) { /* Validate that r3 is a call-clobbered register (always true in the default abi) ... */ @@ -18097,7 +18092,7 @@ arm_emit_call_insn (rtx pat, rtx addr, bool sibcall) const char * output_call (rtx *operands) { - gcc_assert (!arm_arch5); /* Patterns should call blx directly. */ + gcc_assert (!arm_arch5t); /* Patterns should call blx directly. */ /* Handle calls to lr using ip (which may be clobbered in subr anyway). */ if (REGNO (operands[0]) == LR_REGNUM) @@ -19732,7 +19727,7 @@ output_return_instruction (rtx operand, bool really_return, bool reverse, stack_adjust = offsets->outgoing_args - offsets->saved_regs; gcc_assert (stack_adjust == 0 || stack_adjust == 4); - if (stack_adjust && arm_arch5 && TARGET_ARM) + if (stack_adjust && arm_arch5t && TARGET_ARM) sprintf (instr, "ldmib%s\t%%|sp, {", conditional); else { @@ -19807,7 +19802,7 @@ output_return_instruction (rtx operand, bool really_return, bool reverse, break; case ARM_FT_INTERWORKED: - gcc_assert (arm_arch5 || arm_arch4t); + gcc_assert (arm_arch5t || arm_arch4t); sprintf (instr, "bx%s\t%%|lr", conditional); break; @@ -19855,7 +19850,7 @@ output_return_instruction (rtx operand, bool really_return, bool reverse, snprintf (instr, sizeof (instr), "bxns\t%%|lr"); } /* Use bx if it's available. */ - else if (arm_arch5 || arm_arch4t) + else if (arm_arch5t || arm_arch4t) sprintf (instr, "bx%s\t%%|lr", conditional); else sprintf (instr, "mov%s\t%%|pc, %%|lr", conditional); @@ -23459,7 +23454,7 @@ arm_final_prescan_insn (rtx_insn *insn) used since they make interworking inefficient (the linker can't transform BL into BLX). That's only a problem if the machine has BLX. */ - if (arm_arch5) + if (arm_arch5t) { fail = TRUE; break; @@ -31433,7 +31428,7 @@ arm_coproc_builtin_available (enum unspecv builtin) case VUNSPEC_MRC2: /* Only present in ARMv5*, ARMv6 (but not ARMv6-M), ARMv7* and ARMv8-{A,M}. */ - if (arm_arch5) + if (arm_arch5t) return true; break; case VUNSPEC_MCRR: diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md index 2d5359e532f321cec8ce6c507bf79b295ecc6a4c..118cecfffdd9f312fb6371797d4d7d28cc877ba1 100644 --- a/gcc/config/arm/arm.md +++ b/gcc/config/arm/arm.md @@ -8087,7 +8087,7 @@ (define_insn "*call_reg_armv5" (match_operand 1 "" "")) (use (match_operand 2 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_ARM && arm_arch5 && !SIBLING_CALL_P (insn)" + "TARGET_ARM && arm_arch5t && !SIBLING_CALL_P (insn)" "blx%?\\t%0" [(set_attr "type" "call")] ) @@ -8097,7 +8097,7 @@ (define_insn "*call_reg_arm" (match_operand 1 "" "")) (use (match_operand 2 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_ARM && !arm_arch5 && !SIBLING_CALL_P (insn)" + "TARGET_ARM && !arm_arch5t && !SIBLING_CALL_P (insn)" "* return output_call (operands); " @@ -8179,7 +8179,7 @@ (define_insn "*call_value_reg_armv5" (match_operand 2 "" ""))) (use (match_operand 3 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_ARM && arm_arch5 && !SIBLING_CALL_P (insn)" + "TARGET_ARM && arm_arch5t && !SIBLING_CALL_P (insn)" "blx%?\\t%1" [(set_attr "type" "call")] ) @@ -8190,7 +8190,7 @@ (define_insn "*call_value_reg_arm" (match_operand 2 "" ""))) (use (match_operand 3 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_ARM && !arm_arch5 && !SIBLING_CALL_P (insn)" + "TARGET_ARM && !arm_arch5t && !SIBLING_CALL_P (insn)" "* return output_call (&operands[1]); " @@ -8216,7 +8216,7 @@ (define_insn "*call_symbol" /* Switch mode now when possible. */ if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op)) - && arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op))) + && arm_arch5t && arm_change_mode_p (SYMBOL_REF_DECL (op))) return NEED_PLT_RELOC ? \"blx%?\\t%a0(PLT)\" : \"blx%?\\t(%a0)\"; return NEED_PLT_RELOC ? \"bl%?\\t%a0(PLT)\" : \"bl%?\\t%a0\"; @@ -8240,7 +8240,7 @@ (define_insn "*call_value_symbol" /* Switch mode now when possible. */ if (SYMBOL_REF_DECL (op) && !TREE_PUBLIC (SYMBOL_REF_DECL (op)) - && arm_arch5 && arm_change_mode_p (SYMBOL_REF_DECL (op))) + && arm_arch5t && arm_change_mode_p (SYMBOL_REF_DECL (op))) return NEED_PLT_RELOC ? \"blx%?\\t%a1(PLT)\" : \"blx%?\\t(%a1)\"; return NEED_PLT_RELOC ? \"bl%?\\t%a1(PLT)\" : \"bl%?\\t%a1\"; @@ -8325,7 +8325,7 @@ (define_insn "*sibcall_insn" return NEED_PLT_RELOC ? \"b%?\\t%a0(PLT)\" : \"b%?\\t%a0\"; else { - if (arm_arch5 || arm_arch4t) + if (arm_arch5t || arm_arch4t) return \"bx%?\\t%0\\t%@ indirect register sibling call\"; else return \"mov%?\\t%|pc, %0\\t%@ indirect register sibling call\"; @@ -8346,7 +8346,7 @@ (define_insn "*sibcall_value_insn" return NEED_PLT_RELOC ? \"b%?\\t%a1(PLT)\" : \"b%?\\t%a1\"; else { - if (arm_arch5 || arm_arch4t) + if (arm_arch5t || arm_arch4t) return \"bx%?\\t%1\"; else return \"mov%?\\t%|pc, %1\\t@ indirect sibling call \"; @@ -8984,7 +8984,7 @@ (define_split (eq:SI (match_operand:SI 1 "s_register_operand" "") (const_int 0))) (clobber (reg:CC CC_REGNUM))] - "arm_arch5 && TARGET_32BIT" + "arm_arch5t && TARGET_32BIT" [(set (match_dup 0) (clz:SI (match_dup 1))) (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 5)))] ) @@ -9077,7 +9077,7 @@ (define_peephole2 (set (match_operand:SI 0 "register_operand" "") (const_int 0))) (cond_exec (eq (reg:CC CC_REGNUM) (const_int 0)) (set (match_dup 0) (const_int 1)))] - "arm_arch5 && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM)" + "arm_arch5t && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM)" [(set (match_dup 0) (clz:SI (match_dup 1))) (set (match_dup 0) (lshiftrt:SI (match_dup 0) (const_int 5)))] ) @@ -9116,7 +9116,7 @@ (define_peephole2 (set (match_operand:SI 0 "register_operand" "") (const_int 0))) (cond_exec (eq (reg:CC CC_REGNUM) (const_int 0)) (set (match_dup 0) (const_int 1)))] - "arm_arch5 && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM) + "arm_arch5t && TARGET_32BIT && peep2_regno_dead_p (3, CC_REGNUM) && !(TARGET_THUMB2 && optimize_insn_for_size_p ())" [(set (match_dup 0) (minus:SI (match_dup 1) (match_dup 2))) (set (match_dup 0) (clz:SI (match_dup 0))) @@ -11273,7 +11273,7 @@ (define_insn "consttable_16" (define_insn "clzsi2" [(set (match_operand:SI 0 "s_register_operand" "=r") (clz:SI (match_operand:SI 1 "s_register_operand" "r")))] - "TARGET_32BIT && arm_arch5" + "TARGET_32BIT && arm_arch5t" "clz%?\\t%0, %1" [(set_attr "predicable" "yes") (set_attr "type" "clz")]) @@ -11309,7 +11309,7 @@ (define_insn "prefetch" [(prefetch (match_operand:SI 0 "address_operand" "p") (match_operand:SI 1 "" "") (match_operand:SI 2 "" ""))] - "TARGET_32BIT && arm_arch5e" + "TARGET_32BIT && arm_arch5te" "pld\\t%a0" [(set_attr "type" "load_4")] ) diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf index 9ec5bf065acecff4787a3e59b5f8305bf3b715e7..aa36ff08d783a1c7281d4d9e14c1243cc263e4d4 100644 --- a/gcc/config/arm/t-arm-elf +++ b/gcc/config/arm/t-arm-elf @@ -39,9 +39,9 @@ v7ve_fps := vfpv3-d16 vfpv3 vfpv3-d16-fp16 vfpv3-fp16 vfpv4 neon \ v8_fps := simd fp16 crypto fp16+crypto dotprod fp16fml # We don't do anything special with these. Pre-v4t probably doesn't work. -all_early_nofp := armv2 armv2a armv3 armv3m armv4 armv4t armv5 armv5t +all_early_nofp := armv2 armv2a armv3 armv3m armv4 armv4t armv5t -all_early_arch := armv5e armv5tej armv6 armv6j armv6k armv6z armv6kz \ +all_early_arch := armv5tej armv6 armv6j armv6k armv6z armv6kz \ armv6zk armv6t2 iwmmxt iwmmxt2 all_v7_a_r := armv7-a armv7ve armv7-r diff --git a/gcc/config/arm/t-multilib b/gcc/config/arm/t-multilib index 3d0c824b4ec8cacfadbbe765d9ad6fb3d83f4328..25788ad09851daf41038b1578307bf23b7f34a94 100644 --- a/gcc/config/arm/t-multilib +++ b/gcc/config/arm/t-multilib @@ -58,7 +58,7 @@ all_feat_combs = +$(firstword $(1)) \ +$(firstword $(1))$(OPT) $(OPT)),) # Variables used. -all_early_arch := armv5e armv5tej armv6 armv6j armv6k armv6z armv6kz \ +all_early_arch := armv5tej armv6 armv6j armv6k armv6z armv6kz \ armv6zk armv6t2 iwmmxt iwmmxt2 v7_a_nosimd_variants := +fp +vfpv3 +vfpv3-d16-fp16 +vfpv3-fp16 +vfpv4-d16 +vfpv4 v7_a_simd_variants := +simd +neon-fp16 +neon-vfpv4 diff --git a/gcc/config/arm/thumb1.md b/gcc/config/arm/thumb1.md index a345c798ce4011939429c4c529045b4365799143..19dcdbcdd7333b3711e1d71c55cb89ae1d24204e 100644 --- a/gcc/config/arm/thumb1.md +++ b/gcc/config/arm/thumb1.md @@ -1725,7 +1725,7 @@ (define_insn "*call_reg_thumb1_v5" (match_operand 1 "" "")) (use (match_operand 2 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_THUMB1 && arm_arch5 && !SIBLING_CALL_P (insn)" + "TARGET_THUMB1 && arm_arch5t && !SIBLING_CALL_P (insn)" "blx\\t%0" [(set_attr "length" "2") (set_attr "type" "call")] @@ -1748,7 +1748,7 @@ (define_insn "*call_reg_thumb1" (match_operand 1 "" "")) (use (match_operand 2 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_THUMB1 && !arm_arch5 && !SIBLING_CALL_P (insn)" + "TARGET_THUMB1 && !arm_arch5t && !SIBLING_CALL_P (insn)" "* { if (!TARGET_CALLER_INTERWORKING) @@ -1769,7 +1769,7 @@ (define_insn "*call_value_reg_thumb1_v5" (match_operand 2 "" ""))) (use (match_operand 3 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_THUMB1 && arm_arch5" + "TARGET_THUMB1 && arm_arch5t" "blx\\t%1" [(set_attr "length" "2") (set_attr "type" "call")] @@ -1795,7 +1795,7 @@ (define_insn "*call_value_reg_thumb1" (match_operand 2 "" ""))) (use (match_operand 3 "" "")) (clobber (reg:SI LR_REGNUM))] - "TARGET_THUMB1 && !arm_arch5" + "TARGET_THUMB1 && !arm_arch5t" "* { if (!TARGET_CALLER_INTERWORKING) diff --git a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h index 4c99563999ff65456dbee1134c82f24d7b3b1522..fc0e411f6aff1edd418c737a61b2000deee1c6b5 100644 --- a/gcc/config/arm/vxworks.h +++ b/gcc/config/arm/vxworks.h @@ -60,13 +60,8 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see else \ builtin_define ("CPU=ARMARCH6"); \ } \ - else if (arm_arch5) \ - { \ - if (TARGET_THUMB) \ - builtin_define ("CPU=ARMARCH5_T"); \ - else \ - builtin_define ("CPU=ARMARCH5"); \ - } \ + else if (arm_arch5t) \ + builtin_define ("CPU=ARMARCH5_T"); \ else if (arm_arch4) \ { \ if (TARGET_THUMB) \ diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b78a2d67b0dfef91a4b5c2d5ebafa264701c5228..8ed8fbbeab49deb570e8ad30eee024f8ba1e5ed8 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -15902,7 +15902,7 @@ Permissible names are: Additionally, the following architectures, which lack support for the Thumb execution state, are recognized but support is deprecated: @samp{armv2}, @samp{armv2a}, @samp{armv3}, @samp{armv3m}, -@samp{armv4}, @samp{armv5} and @samp{armv5e}. +@samp{armv4}. Many of the architectures support extensions. These can be added by appending @samp{+@var{extension}} to the architecture name. Extension @@ -15930,7 +15930,6 @@ The table below lists the supported extensions for each architecture. Architectures not mentioned do not support any extensions. @table @samp -@item armv5e @itemx armv5te @itemx armv6 @itemx armv6j diff --git a/gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c b/gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c deleted file mode 100644 index 80a00aec978778e848ea47d1eb00974fe7b0d3f5..0000000000000000000000000000000000000000 --- a/gcc/testsuite/gcc.target/arm/armv5_thumb_isa.c +++ /dev/null @@ -1,8 +0,0 @@ -/* { dg-require-effective-target arm_arch_v5_ok } */ -/* { dg-add-options arm_arch_v5 } */ - -#if __ARM_ARCH_ISA_THUMB -#error "__ARM_ARCH_ISA_THUMB defined for ARMv5" -#endif - -int foo; diff --git a/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c b/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c index c2959165b36c8838e867d5de0d06cb6deb14a605..422b061c7a7049fab9060253bc036980584793ed 100644 --- a/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c +++ b/gcc/testsuite/gcc.target/arm/di-longlong64-sync-withhelpers.c @@ -1,7 +1,7 @@ /* { dg-do compile } */ -/* { dg-require-effective-target arm_arch_v5_ok } */ -/* { dg-options "-std=gnu99" } */ -/* { dg-add-options arm_arch_v5 } */ +/* { dg-require-effective-target arm_arch_v5t_ok } */ +/* { dg-options "-marm -std=gnu99" } */ +/* { dg-add-options arm_arch_v5t } */ /* { dg-message "note: '__sync_fetch_and_nand' changed semantics in GCC 4.4" "fetch_and_nand" { target *-*-* } 0 } */ /* { dg-message "note: '__sync_nand_and_fetch' changed semantics in GCC 4.4" "nand_and_fetch" { target *-*-* } 0 } */ /* { dg-message "file included" "In file included" { target *-*-* } 0 } */ diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index cfc22a2297587351ac7f8eed692adc9c42a69033..e0f780deb0b5619abf9bc2e0bf368361b952053a 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -4089,12 +4089,11 @@ proc check_effective_target_arm_fp16_hw { } { # extension (eg. ARMv8.1-A) since there is no macro defined for them. See # how only __ARM_ARCH_8A__ is checked for ARMv8.1-A. # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */ -# /* { dg-add-options arm_arch_v5 } */ -# /* { dg-require-effective-target arm_arch_v5_multilib } */ +# /* { dg-add-options arm_arch_v5t } */ +# /* { dg-require-effective-target arm_arch_v5t_multilib } */ foreach { armfunc armflag armdefs } { v4 "-march=armv4 -marm" __ARM_ARCH_4__ v4t "-march=armv4t" __ARM_ARCH_4T__ - v5 "-march=armv5 -marm" __ARM_ARCH_5__ v5t "-march=armv5t" __ARM_ARCH_5T__ v5te "-march=armv5te" __ARM_ARCH_5TE__ v6 "-march=armv6" __ARM_ARCH_6__ diff --git a/libgcc/config/arm/libunwind.S b/libgcc/config/arm/libunwind.S index 8d0ef977b165a50888c0774ab2f1781d03e0ee01..330244716184c7d1e8273c9f71a37ad351e938d8 100644 --- a/libgcc/config/arm/libunwind.S +++ b/libgcc/config/arm/libunwind.S @@ -47,8 +47,8 @@ .endm #if (__ARM_ARCH__ == 4) -/* Some coprocessors require armv5. We know this code will never be run on - other cpus. Tell gas to allow armv5, but only mark the objects as armv4. +/* Some coprocessors require armv5t. We know this code will never be run on + other cpus. Tell gas to allow armv5t, but only mark the objects as armv4. */ .arch armv5t #ifdef __ARM_ARCH_4T__