{"id":810667,"url":"http://patchwork.ozlabs.org/api/patches/810667/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/patch/562b37aa-4873-1704-b067-7b7010e9bb0c@foss.arm.com/","project":{"id":17,"url":"http://patchwork.ozlabs.org/api/projects/17/?format=json","name":"GNU Compiler Collection","link_name":"gcc","list_id":"gcc-patches.gcc.gnu.org","list_email":"gcc-patches@gcc.gnu.org","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<562b37aa-4873-1704-b067-7b7010e9bb0c@foss.arm.com>","list_archive_url":null,"date":"2017-09-06T15:15:50","name":"[arm-embedded,GCC/ARM] Rewire -mfpu=fp-armv8 as VFPv5 + D32 + DP","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"bea9f7413ffef0e25a27e19cf800addf10e8c2d3","submitter":{"id":67886,"url":"http://patchwork.ozlabs.org/api/people/67886/?format=json","name":"Thomas Preudhomme","email":"thomas.preudhomme@foss.arm.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/gcc/patch/562b37aa-4873-1704-b067-7b7010e9bb0c@foss.arm.com/mbox/","series":[{"id":1832,"url":"http://patchwork.ozlabs.org/api/series/1832/?format=json","web_url":"http://patchwork.ozlabs.org/project/gcc/list/?series=1832","date":"2017-09-06T15:15:50","name":"[arm-embedded,GCC/ARM] Rewire -mfpu=fp-armv8 as VFPv5 + D32 + DP","version":1,"mbox":"http://patchwork.ozlabs.org/series/1832/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/810667/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/810667/checks/","tags":{},"related":[],"headers":{"Return-Path":"<gcc-patches-return-461619-incoming=patchwork.ozlabs.org@gcc.gnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":["patchwork-incoming@bilbo.ozlabs.org","mailing list gcc-patches@gcc.gnu.org"],"Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org\n\t(client-ip=209.132.180.131; helo=sourceware.org;\n\tenvelope-from=gcc-patches-return-461619-incoming=patchwork.ozlabs.org@gcc.gnu.org;\n\treceiver=<UNKNOWN>)","ozlabs.org; dkim=pass (1024-bit key;\n\tunprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org\n\theader.b=\"g8m12fdT\"; dkim-atps=neutral","sourceware.org; auth=none"],"Received":["from sourceware.org (server1.sourceware.org [209.132.180.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xnRxL4vxMz9t2R\n\tfor <incoming@patchwork.ozlabs.org>;\n\tThu,  7 Sep 2017 01:16:06 +1000 (AEST)","(qmail 3093 invoked by alias); 6 Sep 2017 15:15:58 -0000","(qmail 3075 invoked by uid 89); 6 Sep 2017 15:15:57 -0000","from usa-sjc-mx-foss1.foss.arm.com (HELO foss.arm.com)\n\t(217.140.101.70) by sourceware.org\n\t(qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP;\n\tWed, 06 Sep 2017 15:15:55 +0000","from usa-sjc-imap-foss1.foss.arm.com (unknown [10.72.51.249])\tby\n\tusa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id\n\tDBC0D15AD\tfor <gcc-patches@gcc.gnu.org>;\n\tWed,  6 Sep 2017 08:15:52 -0700 (PDT)","from [10.2.206.52] (usa-sjc-imap-foss1.foss.arm.com\n\t[10.72.51.249])\tby usa-sjc-imap-foss1.foss.arm.com (Postfix)\n\twith ESMTPSA id 49B723F578\tfor <gcc-patches@gcc.gnu.org>;\n\tWed,  6 Sep 2017 08:15:52 -0700 (PDT)"],"DomainKey-Signature":"a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:references:subject:to:from:message-id:date:mime-version\n\t:in-reply-to:content-type; q=dns; s=default; b=aQiu42VjNizI+nHce\n\tRvcfT6//khjNtvpW21AxC5Jod/X6B3RCPJ/ZSFvlsRU4xs6h5IiOcETeMROinSxF\n\tzPvJp3MXOxGGAggQLenwkbz0PSG5j/uappUGAPHrGdDyMkFdWVNu/Lm/x9oOePUT\n\tQNTlnM1I64wScemoRc1cabWmqQ=","DKIM-Signature":"v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id\n\t:list-unsubscribe:list-archive:list-post:list-help:sender\n\t:references:subject:to:from:message-id:date:mime-version\n\t:in-reply-to:content-type; s=default; bh=tDTz6yeZsZZOyO9JROEa9Bu\n\t6N9k=; b=g8m12fdTlhZ0InSc6JS2LDtg5MLGyLf/kvJ03yX/4zDg2NlTyScpxNH\n\toMCeih3UwES45q7y3oa0DthgdSOBX7tSov81UhgXoDgOZblTM3SFx8ZKjvsqY37P\n\t7ikZS42Nm0xfvQRHaJ49T3GII6Z25bTCr0fojFUwqW5dB8ciApzc=","Mailing-List":"contact gcc-patches-help@gcc.gnu.org; run by ezmlm","Precedence":"bulk","List-Id":"<gcc-patches.gcc.gnu.org>","List-Unsubscribe":"<mailto:gcc-patches-unsubscribe-incoming=patchwork.ozlabs.org@gcc.gnu.org>","List-Archive":"<http://gcc.gnu.org/ml/gcc-patches/>","List-Post":"<mailto:gcc-patches@gcc.gnu.org>","List-Help":"<mailto:gcc-patches-help@gcc.gnu.org>","Sender":"gcc-patches-owner@gcc.gnu.org","X-Virus-Found":"No","X-Spam-SWARE-Status":"No, score=-25.7 required=5.0 tests=BAYES_00, GIT_PATCH_0,\n\tGIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3,\n\tKAM_LAZY_DOMAIN_SECURITY, KAM_LOTSOFHASH,\n\tRP_MATCHES_RCVD autolearn=ham version=3.3.2 spammy=","X-HELO":"foss.arm.com","References":"<0f5ce400-4f25-9373-2cc7-3a473e089a12@foss.arm.com>","Subject":"[arm-embedded] [PATCH,\n\tGCC/ARM] Rewire -mfpu=fp-armv8 as VFPv5 + D32 + DP","To":"\"gcc-patches@gcc.gnu.org\" <gcc-patches@gcc.gnu.org>","From":"Thomas Preudhomme <thomas.preudhomme@foss.arm.com>","X-Forwarded-Message-Id":"<0f5ce400-4f25-9373-2cc7-3a473e089a12@foss.arm.com>","Message-ID":"<562b37aa-4873-1704-b067-7b7010e9bb0c@foss.arm.com>","Date":"Wed, 6 Sep 2017 16:15:50 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64;\n\trv:52.0) Gecko/20100101 Thunderbird/52.2.1","MIME-Version":"1.0","In-Reply-To":"<0f5ce400-4f25-9373-2cc7-3a473e089a12@foss.arm.com>","Content-Type":"multipart/mixed;\n\tboundary=\"------------3361D9436F4F42524254C5A4\"","X-IsSubscribed":"yes"},"content":"Hi,\n\nWe have decided to apply the following patch to the embedded-7-branch to enable \nARMv8-R support.\n\n\nChangeLog entry is as follows:\n\n*** gcc/ChangeLog.arm ***\n\n2017-09-04  Thomas Preud'homme  <thomas.preudhomme@arm.com>\n\n      Backport from mainline\n      2017-07-14  Thomas Preud'homme  <thomas.preudhomme@arm.com>\n\n     * config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.\n     (ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.\n     * config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.\n     (fp-armv8): Define it as FP_ARMv8 only.\n     config/arm/arm.h (TARGET_FPU_ARMV8): Delete.\n     (TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than\n     TARGET_FPU_ARMV8.\n     config/arm/arm.c (arm_rtx_costs_internal): Replace checks against\n     TARGET_FPU_ARMV8 by checks against TARGET_VFP5.\n     * config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define\n     first ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather\n     than TARGET_FPU_ARMV8.\n     * config/arm/arm-c.c (arm_cpu_builtins): Likewise for\n     __ARM_FEATURE_NUMERIC_MAXMIN macro definition.\n     * config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than\n     TARGET_FPU_ARMV8.\n     * config/arm/neon.md (neon_vrint): Likewise.\n     (neon_vcvt): Likewise.\n     (neon_<fmaxmin_op><mode>): Likewise.\n     (<fmaxmin><mode>3): Likewise.\n     * config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.\n     * config/arm/predicates.md (arm_cond_move_operator): Check against\n     TARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.\n\nBest regards,\n\nThomas\nHi,\n\nfp-armv8 is currently defined as a double precision FPv5 with 32 D\nregisters *and* a special FP_ARMv8 bit. However FP for ARMv8 should only\nbring 32 D registers on top of FPv5-D16 so this FP_ARMv8 bit is\nspurious. As a consequence, many instruction patterns which are guarded\nby TARGET_FPU_ARMV8 are unavailable to FPv5-D16 and FPv5-SP-D16.\n\nThis patch gets rid of TARGET_FPU_ARMV8 and rewire all uses to\nexpressions based on TARGET_VFP5, TARGET_VFPD32 and TARGET_VFP_DOUBLE.\nIt also redefine ISA_FP_ARMv8 to include the D32 capability to\ndistinguish it from FPv5-D16. At last, it sets the +fp.sp for ARMv8-R to\nenable FPv5-SP-D16 (ie FP for ARMv8 with single precision only and 16 D\nregisters).\n\nChangeLog entry is as follows:\n\n2017-07-07  Thomas Preud'homme  <thomas.preudhomme@arm.com>\n\n\t* config/arm/arm-isa.h (isa_bit_FP_ARMv8): Delete enumerator.\n\t(ISA_FP_ARMv8): Define as ISA_FPv5 and ISA_FP_D32.\n\t* config/arm/arm-cpus.in (armv8-r): Define fp.sp as enabling FPv5.\n\t(fp-armv8): Define it as FP_ARMv8 only.\n\tconfig/arm/arm.h (TARGET_FPU_ARMV8): Delete.\n\t(TARGET_VFP_FP16INST): Define using TARGET_VFP5 rather than\n\tTARGET_FPU_ARMV8.\n\tconfig/arm/arm.c (arm_rtx_costs_internal): Replace checks against\n\tTARGET_FPU_ARMV8 by checks against TARGET_VFP5.\n\t* config/arm/arm-builtins.c (arm_builtin_vectorized_function): Define\n\tfirst ARM_CHECK_BUILTIN_MODE definition using TARGET_VFP5 rather\n\tthan TARGET_FPU_ARMV8.\n\t* config/arm/arm-c.c (arm_cpu_builtins): Likewise for\n\t__ARM_FEATURE_NUMERIC_MAXMIN macro definition.\n\t* config/arm/arm.md (cmov<mode>): Condition on TARGET_VFP5 rather than\n\tTARGET_FPU_ARMV8.\n\t* config/arm/neon.md (neon_vrint): Likewise.\n\t(neon_vcvt): Likewise.\n\t(neon_<fmaxmin_op><mode>): Likewise.\n\t(<fmaxmin><mode>3): Likewise.\n\t* config/arm/vfp.md (l<vrint_pattern><su_optab><mode>si2): Likewise.\n\t* config/arm/predicates.md (arm_cond_move_operator): Check against\n\tTARGET_VFP5 rather than TARGET_FPU_ARMV8 and fix spacing.\n\nTesting:\n   * Bootstrapped under ARMv8-A Thumb state and ran testsuite -> no regression\n   * built Spec2000 and Spec2006 with -march=armv8-a+fp16 and compared objdump \n-> no code generation difference\n\nIs this ok for trunk?\n\nBest regards,\n\nThomas","diff":"diff --git a/gcc/config/arm/arm-builtins.c b/gcc/config/arm/arm-builtins.c\nindex 63ee880822c17eda55dd58438d61cbbba333b2c6..7504ed581c63a657a0dff48442633704bd252b2e 100644\n--- a/gcc/config/arm/arm-builtins.c\n+++ b/gcc/config/arm/arm-builtins.c\n@@ -3098,7 +3098,7 @@ arm_builtin_vectorized_function (unsigned int fn, tree type_out, tree type_in)\n    NULL_TREE is returned if no such builtin is available.  */\n #undef ARM_CHECK_BUILTIN_MODE\n #define ARM_CHECK_BUILTIN_MODE(C)    \\\n-  (TARGET_FPU_ARMV8   \\\n+  (TARGET_VFP5   \\\n    && flag_unsafe_math_optimizations \\\n    && ARM_CHECK_BUILTIN_MODE_1 (C))\n \ndiff --git a/gcc/config/arm/arm-c.c b/gcc/config/arm/arm-c.c\nindex a3daa3220a2bc4220dffdb7ca08ca9419bdac425..9178937b6d9e0fe5d0948701390c4cf01f4f8c7d 100644\n--- a/gcc/config/arm/arm-c.c\n+++ b/gcc/config/arm/arm-c.c\n@@ -96,7 +96,7 @@ arm_cpu_builtins (struct cpp_reader* pfile)\n \t\t       || TARGET_ARM_ARCH_ISA_THUMB >=2));\n \n   def_or_undef_macro (pfile, \"__ARM_FEATURE_NUMERIC_MAXMIN\",\n-\t\t      TARGET_ARM_ARCH >= 8 && TARGET_NEON && TARGET_FPU_ARMV8);\n+\t\t      TARGET_ARM_ARCH >= 8 && TARGET_NEON && TARGET_VFP5);\n \n   def_or_undef_macro (pfile, \"__ARM_FEATURE_SIMD32\", TARGET_INT_SIMD);\n \ndiff --git a/gcc/config/arm/arm-cpus.in b/gcc/config/arm/arm-cpus.in\nindex f35128acb7d68c6a0592355b9d3d56ee8f826aca..e2ff297aed7514073dbb3bf5ee86964f202e5a14 100644\n--- a/gcc/config/arm/arm-cpus.in\n+++ b/gcc/config/arm/arm-cpus.in\n@@ -389,7 +389,7 @@ begin arch armv8-r\n  option crc add bit_crc32\n # fp.sp => fp-armv8 (d16); simd => simd + fp-armv8 + d32 + double precision\n # note: no fp option for fp-armv8 (d16) + double precision at the moment\n- option fp.sp add FP_ARMv8\n+ option fp.sp add FPv5\n  option simd add FP_ARMv8 NEON\n  option crypto add FP_ARMv8 CRYPTO\n  option nocrypto remove ALL_CRYPTO\n@@ -1390,7 +1390,7 @@ begin fpu fpv5-d16\n end fpu fpv5-d16\n \n begin fpu fp-armv8\n- isa FP_ARMv8 FP_D32\n+ isa FP_ARMv8\n end fpu fp-armv8\n \n begin fpu neon-fp-armv8\ndiff --git a/gcc/config/arm/arm-isa.h b/gcc/config/arm/arm-isa.h\nindex 0d66a0400c517668db023fc66ff43e26d43add51..dbd29eaa52f2007498c2aff6263b8b6c3a70e2c2 100644\n--- a/gcc/config/arm/arm-isa.h\n+++ b/gcc/config/arm/arm-isa.h\n@@ -60,7 +60,6 @@ enum isa_feature\n     isa_bit_VFPv4,\t/* Vector floating point v4.  */\n     isa_bit_FPv5,\t/* Floating point v5.  */\n     isa_bit_lpae,\t/* ARMv7-A LPAE.  */\n-    isa_bit_FP_ARMv8,\t/* ARMv8 floating-point extension.  */\n     isa_bit_neon,\t/* Advanced SIMD instructions.  */\n     isa_bit_fp16conv,\t/* Conversions to/from fp16 (VFPv3 extension).  */\n     isa_bit_fp_dbl,\t/* Double precision operations supported.  */\n@@ -143,7 +142,7 @@ enum isa_feature\n    default.  isa_bit_fp16 is deliberately missing from this list.  */\n #define ISA_ALL_FPU_INTERNAL\t\t\t\t\t\t\\\n   isa_bit_VFPv2, isa_bit_VFPv3, isa_bit_VFPv4, isa_bit_FPv5,\t\t\\\n-  isa_bit_FP_ARMv8, isa_bit_fp16conv, isa_bit_fp_dbl, ISA_ALL_SIMD\n+  isa_bit_fp16conv, isa_bit_fp_dbl, ISA_ALL_SIMD\n \n /* Similarly, but including fp16 and other extensions that aren't part of\n    -mfpu support.  */\n@@ -154,10 +153,10 @@ enum isa_feature\n #define ISA_VFPv3\tISA_VFPv2, isa_bit_VFPv3\n #define ISA_VFPv4\tISA_VFPv3, isa_bit_VFPv4, isa_bit_fp16conv\n #define ISA_FPv5\tISA_VFPv4, isa_bit_FPv5\n-#define ISA_FP_ARMv8\tISA_FPv5, isa_bit_FP_ARMv8\n \n #define ISA_FP_DBL\tisa_bit_fp_dbl\n #define ISA_FP_D32\tISA_FP_DBL, isa_bit_fp_d32\n+#define ISA_FP_ARMv8\tISA_FPv5, ISA_FP_D32\n #define ISA_NEON\tISA_FP_D32, isa_bit_neon\n #define ISA_CRYPTO\tISA_NEON, isa_bit_crypto\n \ndiff --git a/gcc/config/arm/arm.h b/gcc/config/arm/arm.h\nindex 315622212a5ce10d0c771535fe31f63c3be16444..4f53583cf0219de4329bc64a47a5a42c550ff354 100644\n--- a/gcc/config/arm/arm.h\n+++ b/gcc/config/arm/arm.h\n@@ -196,10 +196,6 @@ extern tree arm_fp16_type_node;\n /* FPU supports fused-multiply-add operations.  */\n #define TARGET_FMA (bitmap_bit_p (arm_active_target.isa, isa_bit_VFPv4))\n \n-/* FPU is ARMv8 compatible.  */\n-#define TARGET_FPU_ARMV8\t\t\t\t\t\\\n-  (bitmap_bit_p (arm_active_target.isa, isa_bit_FP_ARMv8))\n-\n /* FPU supports Crypto extensions.  */\n #define TARGET_CRYPTO (bitmap_bit_p (arm_active_target.isa, isa_bit_crypto))\n \n@@ -216,7 +212,7 @@ extern tree arm_fp16_type_node;\n \n /* FPU supports the floating point FP16 instructions for ARMv8.2 and later.  */\n #define TARGET_VFP_FP16INST \\\n-  (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 && arm_fp16_inst)\n+  (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_VFP5 && arm_fp16_inst)\n \n /* FPU supports the AdvSIMD FP16 instructions for ARMv8.2 and later.  */\n #define TARGET_NEON_FP16INST (TARGET_VFP_FP16INST && TARGET_NEON_RDMA)\ndiff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c\nindex c6101efd555996a4c6db5eaea0130b0940c4cff8..f59132c3f079d10d9e3d920b61037db2f3144eee 100644\n--- a/gcc/config/arm/arm.c\n+++ b/gcc/config/arm/arm.c\n@@ -10755,7 +10755,7 @@ arm_rtx_costs_internal (rtx x, enum rtx_code code, enum rtx_code outer_code,\n \t{\n \t  if (speed_p)\n \t    *cost += extra_cost->fp[mode == DFmode].widen;\n-\t  if (!TARGET_FPU_ARMV8\n+\t  if (!TARGET_VFP5\n \t      && GET_MODE (XEXP (x, 0)) == HFmode)\n \t    {\n \t      /* Pre v8, widening HF->DF is a two-step process, first\n@@ -10849,7 +10849,7 @@ arm_rtx_costs_internal (rtx x, enum rtx_code code, enum rtx_code outer_code,\n \t      return true;\n \t    }\n \t  else if (GET_MODE_CLASS (mode) == MODE_FLOAT\n-\t\t   && TARGET_FPU_ARMV8)\n+\t\t   && TARGET_VFP5)\n \t    {\n \t      if (speed_p)\n \t\t*cost += extra_cost->fp[mode == DFmode].roundint;\ndiff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md\nindex e6e1ac54a850c35807d683804f5294fbef1487ad..049a78edefe9f85c6f84a4ecf0158d559e1d5674 100644\n--- a/gcc/config/arm/arm.md\n+++ b/gcc/config/arm/arm.md\n@@ -7879,7 +7879,7 @@\n \t\t\t                      \"<F_constraint>\")\n \t\t\t  (match_operand:SDF 4 \"s_register_operand\"\n \t\t\t                      \"<F_constraint>\")))]\n-  \"TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>\"\n+  \"TARGET_HARD_FLOAT && TARGET_VFP5 <vfp_double_cond>\"\n   \"*\n   {\n     enum arm_cond_code code = maybe_get_arm_condition_code (operands[1]);\ndiff --git a/gcc/config/arm/neon.md b/gcc/config/arm/neon.md\nindex 33b25ff3c730544b4376bf318400d703c8813a0a..235c46da1a19712e2924d748545474ed991d9f92 100644\n--- a/gcc/config/arm/neon.md\n+++ b/gcc/config/arm/neon.md\n@@ -751,7 +751,7 @@\n         (unspec:VCVTF [(match_operand:VCVTF 1\n \t\t         \"s_register_operand\" \"w\")]\n \t\tNEON_VRINT))]\n-  \"TARGET_NEON && TARGET_FPU_ARMV8\"\n+  \"TARGET_NEON && TARGET_VFP5\"\n   \"vrint<nvrint_variant>.f32\\\\t%<V_reg>0, %<V_reg>1\"\n   [(set_attr \"type\" \"neon_fp_round_<V_elem_ch><q>\")]\n )\n@@ -761,7 +761,7 @@\n \t(FIXUORS:<V_cmp_result> (unspec:VCVTF\n \t\t\t       [(match_operand:VCVTF 1 \"register_operand\" \"w\")]\n \t\t\t       NEON_VCVT)))]\n-  \"TARGET_NEON && TARGET_FPU_ARMV8\"\n+  \"TARGET_NEON && TARGET_VFP5\"\n   \"vcvt<nvrint_variant>.<su>32.f32\\\\t%<V_reg>0, %<V_reg>1\"\n   [(set_attr \"type\" \"neon_fp_to_int_<V_elem_ch><q>\")\n    (set_attr \"predicable\" \"no\")]\n@@ -2901,7 +2901,7 @@\n \t(unspec:VCVTF [(match_operand:VCVTF 1 \"s_register_operand\" \"w\")\n \t\t       (match_operand:VCVTF 2 \"s_register_operand\" \"w\")]\n \t\t       VMAXMINFNM))]\n-  \"TARGET_NEON && TARGET_FPU_ARMV8\"\n+  \"TARGET_NEON && TARGET_VFP5\"\n   \"<fmaxmin_op>.<V_s_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2\"\n   [(set_attr \"type\" \"neon_fp_minmax_s<q>\")]\n )\n@@ -2912,7 +2912,7 @@\n \t(unspec:VCVTF [(match_operand:VCVTF 1 \"s_register_operand\" \"w\")\n \t\t       (match_operand:VCVTF 2 \"s_register_operand\" \"w\")]\n \t\t       VMAXMINFNM))]\n-  \"TARGET_NEON && TARGET_FPU_ARMV8\"\n+  \"TARGET_NEON && TARGET_VFP5\"\n   \"<fmaxmin_op>.<V_s_elem>\\t%<V_reg>0, %<V_reg>1, %<V_reg>2\"\n   [(set_attr \"type\" \"neon_fp_minmax_s<q>\")]\n )\ndiff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md\nindex afb5d6339a8af362384c93bbb46928635073b74b..3e25cd16b29231d53b4cadce3db0fbb3168cd4c5 100644\n--- a/gcc/config/arm/predicates.md\n+++ b/gcc/config/arm/predicates.md\n@@ -350,9 +350,9 @@\n \n (define_special_predicate \"arm_cond_move_operator\"\n   (if_then_else (match_test \"arm_restrict_it\")\n-                (and (match_test \"TARGET_FPU_ARMV8\")\n-                     (match_operand 0 \"arm_vsel_comparison_operator\"))\n-                (match_operand 0 \"expandable_comparison_operator\")))\n+\t\t(and (match_test \"TARGET_VFP5\")\n+\t\t     (match_operand 0 \"arm_vsel_comparison_operator\"))\n+\t\t(match_operand 0 \"expandable_comparison_operator\")))\n \n (define_special_predicate \"noov_comparison_operator\"\n   (match_code \"lt,ge,eq,ne\"))\ndiff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md\nindex d8f77e2ffe4fdb7c952d6a5ac947d91f89ce259d..23c1d67c9e3707e64a4e206dc62727e4c79ba89c 100644\n--- a/gcc/config/arm/vfp.md\n+++ b/gcc/config/arm/vfp.md\n@@ -1997,7 +1997,7 @@\n         (FIXUORS:SI (unspec:SDF\n                         [(match_operand:SDF 1\n                            \"register_operand\" \"<F_constraint>\")] VCVT)))]\n-  \"TARGET_HARD_FLOAT && TARGET_FPU_ARMV8 <vfp_double_cond>\"\n+  \"TARGET_HARD_FLOAT && TARGET_VFP5 <vfp_double_cond>\"\n   \"vcvt<vrint_variant>.<su>32.<V_if_elem>\\\\t%0, %<V_reg>1\"\n   [(set_attr \"predicable\" \"no\")\n    (set_attr \"conds\" \"unconditional\")\n","prefixes":["arm-embedded","GCC/ARM"]}