From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 58D5A3858D26 for ; Wed, 22 May 2024 11:54:34 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 58D5A3858D26 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 58D5A3858D26 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716378875; cv=none; b=EJ/vqrAYBT4cJag0ippwRBZE2t71iMw2qz8wXmyNqlbQWkzLWgiAQUCJ31XsH+MwjDNv531C29crMvIoWyNozUpfjGWkFI7WQO0LhYWp3V63Ch8Cys2OvBGmdzOftQTFZYmEA9xXjmbDMJyutgzFFdSvvhjKTydo1x0y884M3kg= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716378875; c=relaxed/simple; bh=3uq9X/JXf4FkRnx5lh1zcV1uyiFxti/pMXyPamqGuzk=; h=Message-ID:Date:MIME-Version:Subject:To:From; b=SqiBWU+LmOsQyqaPS6Xrjq2XCCSpRqtujddZE2nvMBFDgn/t3J8ZvPcxfwqP5xb1kSsajl+7l5PJlcRQ2NCf55aaD7EzFJFCLvlmIiJTXOshrNrBW489SJ4FdTf0JQ5W3TAsLwB5GltSm1s/bo9KXLjaRg4X3qoSrKsHVewAoxc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 16B76339; Wed, 22 May 2024 04:54:58 -0700 (PDT) Received: from [10.2.78.57] (e120077-lin.cambridge.arm.com [10.2.78.57]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 6156C3F641; Wed, 22 May 2024 04:54:33 -0700 (PDT) Message-ID: <4a67aa30-18ab-4ca3-9536-bab7b70b3367@arm.com> Date: Wed, 22 May 2024 12:54:32 +0100 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v2] testsuite: Verify r0-r3 are extended with CMSE To: Torbjorn SVENSSON , gcc-patches@gcc.gnu.org Cc: Richard.Ball@arm.com, yvan.roux@foss.st.com References: <07fde3e9-c08a-4a05-839f-86c8a18efec3@arm.com> <20240502105045.2505591-1-torbjorn.svensson@foss.st.com> <0c050cb3-e3fd-4a71-a49f-bd4b0138d975@foss.st.com> From: "Richard Earnshaw (lists)" Content-Language: en-GB In-Reply-To: <0c050cb3-e3fd-4a71-a49f-bd4b0138d975@foss.st.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-3495.8 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,KAM_DMARC_NONE,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,KAM_SHORT,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 22/05/2024 12:14, Torbjorn SVENSSON wrote: > Hello Richard, > > Thanks for the reply. > > From my point of view, at least the -fshort-enums part should be on all branches. Just to be clean, maybe it's easier to backport the entire patch? Yes, that's a fair point. I was only thinking about the broadening of the test to the other argument registers when I said that. So, just to be clear, OK all. R. > > Unless you have an objection, I would like to go ahead and just backport it to all branches. > > Kind regards, > Torbjörn > > On 2024-05-22 12:55, Richard Earnshaw (lists) wrote: >> On 06/05/2024 12:50, Torbjorn SVENSSON wrote: >>> Hi, >>> >>> Forgot to mention when I sent the patch that I would like to commit it to the following branches: >>> >>> - releases/gcc-11 >>> - releases/gcc-12 >>> - releases/gcc-13 >>> - releases/gcc-14 >>> - trunk >>> >> >> Well you can [commit it to the release branches], but I'm not sure it's essential.  It seems pretty unlikely to me that this would regress on a release branch without having first regressed on trunk. >> >> R. >> >>> Kind regards, >>> Torbjörn >>> >>> On 2024-05-02 12:50, Torbjörn SVENSSON wrote: >>>> Add regression test to the existing zero/sign extend tests for CMSE to >>>> verify that r0, r1, r2 and r3 are properly extended, not just r0. >>>> >>>> boolCharShortEnumSecureFunc test is done using -O0 to ensure the >>>> instructions are in a predictable order. >>>> >>>> gcc/testsuite/ChangeLog: >>>> >>>>      * gcc.target/arm/cmse/extend-param.c: Add regression test. Add >>>>        -fshort-enums. >>>>      * gcc.target/arm/cmse/extend-return.c: Add -fshort-enums option. >>>> >>>> Signed-off-by: Torbjörn SVENSSON >>>> --- >>>>    .../gcc.target/arm/cmse/extend-param.c        | 21 +++++++++++++++---- >>>>    .../gcc.target/arm/cmse/extend-return.c       |  4 ++-- >>>>    2 files changed, 19 insertions(+), 6 deletions(-) >>>> >>>> diff --git a/gcc/testsuite/gcc.target/arm/cmse/extend-param.c b/gcc/testsuite/gcc.target/arm/cmse/extend-param.c >>>> index 01fac786238..d01ef87e0be 100644 >>>> --- a/gcc/testsuite/gcc.target/arm/cmse/extend-param.c >>>> +++ b/gcc/testsuite/gcc.target/arm/cmse/extend-param.c >>>> @@ -1,5 +1,5 @@ >>>>    /* { dg-do compile } */ >>>> -/* { dg-options "-mcmse" } */ >>>> +/* { dg-options "-mcmse -fshort-enums" } */ >>>>    /* { dg-final { check-function-bodies "**" "" "" } } */ >>>>      #include >>>> @@ -78,7 +78,6 @@ __attribute__((cmse_nonsecure_entry)) char enumSecureFunc (enum offset index) { >>>>      if (index >= ARRAY_SIZE) >>>>        return 0; >>>>      return array[index]; >>>> - >>>>    } >>>>      /* >>>> @@ -88,9 +87,23 @@ __attribute__((cmse_nonsecure_entry)) char enumSecureFunc (enum offset index) { >>>>    **    ... >>>>    */ >>>>    __attribute__((cmse_nonsecure_entry)) char boolSecureFunc (bool index) { >>>> - >>>>      if (index >= ARRAY_SIZE) >>>>        return 0; >>>>      return array[index]; >>>> +} >>>>    -} >>>> \ No newline at end of file >>>> +/* >>>> +**__acle_se_boolCharShortEnumSecureFunc: >>>> +**    ... >>>> +**    uxtb    r0, r0 >>>> +**    uxtb    r1, r1 >>>> +**    uxth    r2, r2 >>>> +**    uxtb    r3, r3 >>>> +**    ... >>>> +*/ >>>> +__attribute__((cmse_nonsecure_entry,optimize(0))) char boolCharShortEnumSecureFunc (bool a, unsigned char b, unsigned short c, enum offset d) { >>>> +  size_t index = a + b + c + d; >>>> +  if (index >= ARRAY_SIZE) >>>> +    return 0; >>>> +  return array[index]; >>>> +} >>>> diff --git a/gcc/testsuite/gcc.target/arm/cmse/extend-return.c b/gcc/testsuite/gcc.target/arm/cmse/extend-return.c >>>> index cf731ed33df..081de0d699f 100644 >>>> --- a/gcc/testsuite/gcc.target/arm/cmse/extend-return.c >>>> +++ b/gcc/testsuite/gcc.target/arm/cmse/extend-return.c >>>> @@ -1,5 +1,5 @@ >>>>    /* { dg-do compile } */ >>>> -/* { dg-options "-mcmse" } */ >>>> +/* { dg-options "-mcmse -fshort-enums" } */ >>>>    /* { dg-final { check-function-bodies "**" "" "" } } */ >>>>      #include >>>> @@ -89,4 +89,4 @@ unsigned char __attribute__((noipa)) enumNonsecure0 (ns_enum_foo_t * ns_foo_p) >>>>    unsigned char boolNonsecure0 (ns_bool_foo_t * ns_foo_p) >>>>    { >>>>      return ns_foo_p (); >>>> -} >>>> \ No newline at end of file >>>> +} >>