From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id 7F0CD385697B for ; Thu, 20 Apr 2023 16:57:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7F0CD385697B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-51b5490c6f0so1131038a12.0 for ; Thu, 20 Apr 2023 09:57:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1682009821; x=1684601821; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=2CubVRvExlXd7M/q2dHChtP1sARd/9H8Mp5yjB4aXU4=; b=ch5TLOzcLdrT12fY+qRf56A+hyhnqO+j0o1PlyJsiSDc+7wVyBXy9MspPHoJ0L1lD0 TtcMSil0oCYYSxrpXL1FXvSZTxN3QcONR2uq55vVA66mEZWu3VWfzgpeI/wrigriV1bw cjMmSlHHVaYgVwHmdzp3XN5LO0Onz3Aut/hmdaHlOr1n4iPpHogoN0EwxuPgEhWknSOK 70XtUHyCU7GBK+HTMGPVIhuKRlwjZKwZxm54FyF++9ekouv5pwwUFS4dyBMVsu73/PEv cr8o9AV1AUTcKpumK7PM7trrKdHO197TuadUYczfRA1l9xRGus05s5rxwBs6vyCOWf2k hK1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682009821; x=1684601821; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=2CubVRvExlXd7M/q2dHChtP1sARd/9H8Mp5yjB4aXU4=; b=FGxkALyJbG5czkQobNa0olfTwgsFoEn1ODLtfIBLUsF604AEpGaCCtxkPqGn1qRruk CRe56fR+zeIwVo2HqIlDFUKuHcuvBtBKsgRs6GR6tKMnq8AKVW7ZMgdNUVzAV2y1WLqa TqMI+/eYWFxRPX+U8WH6+joR+95lj2TdIauPpr6jQCRsuJqV3ge6U8+HjpwYn/RIA8et 5im7eeTlNDFfXs17gwU0r5fUOFakoD9TE+uibv/uxpRCAuBbnMtlOv5isdV4IlFhAjn9 5MAY0eBw2efF/LtMh9kWUycQTf7cdd2egbUYtB5m/e0sWusNVgghJJSugcsG7X50cvmV jT1A== X-Gm-Message-State: AAQBX9epT0+Fv3zGgSplZR3zVCJpXiWyz2glNA5G4rZV7mYYLNBmfCHY ERMQOdvJkGhuypiY+hkGLKzqKxn5snI= X-Google-Smtp-Source: AKy350Y+fhBOEstkc/I5bUB/3FNxUKRpUP2CU1Oin3nn2KHjBNHHccELAAeokNjCp7IDeNTSUZr7Ew== X-Received: by 2002:a05:6a21:3703:b0:ef:f558:b80 with SMTP id yl3-20020a056a21370300b000eff5580b80mr1863306pzb.58.1682009820631; Thu, 20 Apr 2023 09:57:00 -0700 (PDT) Received: from ?IPV6:2601:681:8600:13d0::99f? ([2601:681:8600:13d0::99f]) by smtp.gmail.com with ESMTPSA id p2-20020a056a000a0200b00638c9a2ba5csm1486093pfh.62.2023.04.20.09.56.59 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 20 Apr 2023 09:57:00 -0700 (PDT) Message-ID: <3dbcefe5-5b62-eb89-442a-abebe621f3bc@gmail.com> Date: Thu, 20 Apr 2023 10:56:59 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.9.1 Subject: Re: [PATCH] riscv: generate builtin macro for compilation with strict alignment Content-Language: en-US To: gcc-patches@gcc.gnu.org References: <20230117225908.1604948-1-vineetg@rivosinc.com> From: Jeff Law In-Reply-To: <20230117225908.1604948-1-vineetg@rivosinc.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-9.7 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE 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 1/17/23 15:59, Vineet Gupta wrote: > This could be useful for library writers who want to write code variants > for fast vs. slow unaligned accesses. > > We distinguish explicit -mstrict-align (1) vs. slow_unaligned_access > cpu tune param (2) for even more code divesity. > > gcc/ChangeLog: > > * config/riscv-c.cc (riscv_cpu_cpp_builtins): > Generate __riscv_strict_align with value 1 or 2. > * config/riscv/riscv.cc: Define riscv_user_wants_strict_align. > (riscv_option_override) Set riscv_user_wants_strict_align to > TARGET_STRICT_ALIGN. > * config/riscv/riscv.h: Declare riscv_user_wants_strict_align. > > gcc/testsuite/ChangeLog: > > * gcc.target/riscv/attribute.c: Check for > __riscv_strict_align=1. > * gcc.target/riscv/predef-align-1.c: New test. > * gcc.target/riscv/predef-align-2.c: New test. > * gcc.target/riscv/predef-align-3.c: New test. > * gcc.target/riscv/predef-align-4.c: New test. > * gcc.target/riscv/predef-align-5.c: New test. > > Signed-off-by: Vineet Gupta > --- > gcc/config/riscv/riscv-c.cc | 11 +++++++++++ > gcc/config/riscv/riscv.cc | 9 +++++++++ > gcc/config/riscv/riscv.h | 1 + > gcc/testsuite/gcc.target/riscv/attribute-4.c | 9 +++++++++ > gcc/testsuite/gcc.target/riscv/predef-align-1.c | 12 ++++++++++++ > gcc/testsuite/gcc.target/riscv/predef-align-2.c | 11 +++++++++++ > gcc/testsuite/gcc.target/riscv/predef-align-3.c | 15 +++++++++++++++ > gcc/testsuite/gcc.target/riscv/predef-align-4.c | 16 ++++++++++++++++ > gcc/testsuite/gcc.target/riscv/predef-align-5.c | 16 ++++++++++++++++ > 9 files changed, 100 insertions(+) > create mode 100644 gcc/testsuite/gcc.target/riscv/predef-align-1.c > create mode 100644 gcc/testsuite/gcc.target/riscv/predef-align-2.c > create mode 100644 gcc/testsuite/gcc.target/riscv/predef-align-3.c > create mode 100644 gcc/testsuite/gcc.target/riscv/predef-align-4.c > create mode 100644 gcc/testsuite/gcc.target/riscv/predef-align-5.c > > diff --git a/gcc/config/riscv/riscv-c.cc b/gcc/config/riscv/riscv-c.cc > index 826ae0067bb8..47a396501d74 100644 > --- a/gcc/config/riscv/riscv-c.cc > +++ b/gcc/config/riscv/riscv-c.cc > @@ -102,6 +102,17 @@ riscv_cpu_cpp_builtins (cpp_reader *pfile) > > } > > + /* TARGET_STRICT_ALIGN does not cover all cases. */ > + if (riscv_slow_unaligned_access_p) > + { > + /* Explicit -mstruct-align preceedes cpu tune param > + slow_unaligned_access=true. */ Did you mean "-mstrict-align" above? > + if (riscv_user_wants_strict_align) > + builtin_define_with_int_value ("__riscv_strict_align", 1); > + else > + builtin_define_with_int_value ("__riscv_strict_align", 2); So I don't understand why we're testing "riscv_user_wants_strict_align" instead of TARGET_STRICT_ALIGN here. AFAICT they're equivalent. But maybe there's something subtle I'm missing. Jeff