From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-001b2d01.pphosted.com (mx0a-001b2d01.pphosted.com [148.163.156.1]) by sourceware.org (Postfix) with ESMTPS id B6CFD3858D33 for ; Fri, 12 Apr 2024 03:32:11 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B6CFD3858D33 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=linux.ibm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=linux.ibm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B6CFD3858D33 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=148.163.156.1 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712892734; cv=none; b=pk79FPoWVy2EuouICEvqWQwadgzEQIXAYZ/ubLV1DbVAJTYhYjUzm09KoK1YqtAzaNulXWLJ9qAP8XeulQgqkGLjnHKH0OtCCkF6ExKQZILZ281BIet8WBzCI5fOE/3pO99IpJj+91RgM4Rfejj16/BjTcBr5OZpp+kWEuJUDJA= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1712892734; c=relaxed/simple; bh=a4pmkXrneG3YT1tM4W7HewWKBjTSHjXWoG3q78mdC3A=; h=DKIM-Signature:Message-ID:Date:Subject:To:From:MIME-Version; b=XMfQE1gJZgXB5agv/FifWC4o3HZdC++M83wVM6+YvBo3V+B+LNcfnhKNCJ3eCWBJm2MtSoQZeRDX8rPq4skjrl61blYUo/GYvrGXuT6KzTKeq9A1cCIDbjezJGd62k2mRGhnAKYZ17DiZWQxG550j1Sf/o6+SwbgkPYAdtQAtPA= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from pps.filterd (m0353729.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 43C37tOT022166; Fri, 12 Apr 2024 03:32:10 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=message-id : date : subject : to : cc : references : from : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pp1; bh=QYi2AGhpQi4qoKPzPnWyisv/juLPd/3Z69Kg+0VugZ8=; b=FJLAhDaSMt7SkVmzvJFo1d3lYApKhigOzktWml1V3K0eFOgguvQM94Jzv/wbtNJ/0A72 n9sebc+qZ1HWcM5CTiiiHX1+/6WBD9/CKOrPEu4geNoV7X7UGId+jTnAgrDdbjKWK9tW KVnWh/p/20oL1cSEJRWGppmUiSrpV9YzodoYVQZyE7Hq5rQ8prJfxbOxwCQ6qLRHqwHZ 9KbGAFP+JwMPC2D80pu5shjpIui7p2iDX3fvuhoZdfEsfrbfmf2CyOTRYhKfF5kPkqtF w44W2Yzv7jWOEKgA0c/vheoMqCAQjV2GX1eBMr+21JTjW8IAEKKwKNJpEc5FYeizZwNL uA== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3xevs4g0vs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 12 Apr 2024 03:32:10 +0000 Received: from m0353729.ppops.net (m0353729.ppops.net [127.0.0.1]) by pps.reinject (8.17.1.5/8.17.1.5) with ESMTP id 43C3W9Yl025519; Fri, 12 Apr 2024 03:32:09 GMT Received: from ppma22.wdc07v.mail.ibm.com (5c.69.3da9.ip4.static.sl-reverse.com [169.61.105.92]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3xevs4g0vp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 12 Apr 2024 03:32:09 +0000 Received: from pps.filterd (ppma22.wdc07v.mail.ibm.com [127.0.0.1]) by ppma22.wdc07v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 43C386qd019108; Fri, 12 Apr 2024 03:32:08 GMT Received: from smtprelay01.fra02v.mail.ibm.com ([9.218.2.227]) by ppma22.wdc07v.mail.ibm.com (PPS) with ESMTPS id 3xbh40qmuv-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 12 Apr 2024 03:32:08 +0000 Received: from smtpav06.fra02v.mail.ibm.com (smtpav06.fra02v.mail.ibm.com [10.20.54.105]) by smtprelay01.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 43C3W2JV42664302 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 12 Apr 2024 03:32:04 GMT Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id A706920049; Fri, 12 Apr 2024 03:32:02 +0000 (GMT) Received: from smtpav06.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id C381320040; Fri, 12 Apr 2024 03:32:00 +0000 (GMT) Received: from [9.197.231.49] (unknown [9.197.231.49]) by smtpav06.fra02v.mail.ibm.com (Postfix) with ESMTP; Fri, 12 Apr 2024 03:32:00 +0000 (GMT) Message-ID: <5037d210-9c9b-eda9-1327-ef5b7e0ddd17@linux.ibm.com> Date: Fri, 12 Apr 2024 11:31:59 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.15.1 Subject: Re: [PATCH] rs6000: Add OPTION_MASK_POWER8 [PR101865] To: Peter Bergner Cc: Michael Meissner , GCC Patches , David Edelsohn , Segher Boessenkool References: Content-Language: en-US From: "Kewen.Lin" In-Reply-To: Content-Type: text/plain; charset=UTF-8 X-TM-AS-GCONF: 00 X-Proofpoint-GUID: HXBIOUJuZ1DC0UuzV52yVT2uf8Skvc_2 X-Proofpoint-ORIG-GUID: cKeUmLTNoo4hKBgxV03xSCHtwsrR98GS Content-Transfer-Encoding: 7bit X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-04-11_14,2024-04-09_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 suspectscore=0 adultscore=0 mlxscore=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 mlxlogscore=999 priorityscore=1501 clxscore=1015 impostorscore=0 phishscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2404010000 definitions=main-2404120023 X-Spam-Status: No, score=-13.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,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: Hi, on 2024/4/12 06:15, Peter Bergner wrote: > FYI: This patch is an update to Will Schmidt's patches to fix PR101865: > > https://gcc.gnu.org/pipermail/gcc-patches/2022-September/601825.html > https://gcc.gnu.org/pipermail/gcc-patches/2022-September/601823.html > > ...taking into consideration patch reviews received than. I also found > a few more locations that needed patching, as well as simplifying the > testsuite test cases by removing the need to scan for the predefined macros. > > > > The bug in PR101865 is the _ARCH_PWR8 predefined macro is conditional upon > TARGET_DIRECT_MOVE, which can be false for some -mcpu=power8 compiles if the > -mno-altivec or -mno-vsx options are used. The solution here is to create > a new OPTION_MASK_POWER8 mask that is true for -mcpu=power8, regardless of > Altivec or VSX enablement. > > Unfortunately, the only way to create an OPTION_MASK_* mask is to create > a new option, which we have done here, but marked it as WarnRemoved since > we do not want users using it. For stage1, we will look into how we can > create ISA mask flags for use in the compiler without the need for explicit > options. > > The passed bootstrap and regtest on powerpc64le-linux. Ok for trunk? Thanks for fixing this. I guess it should go well on powerpc64-linux too, but since it's very late stage4 now, could you also test this on BE machine? > > This is also broken on the release branches, so ok for backports after > some burn-in time on trunk? > > Peter > > > 2024-04-11 Will Schmidt > Peter Bergner > > gcc/ > PR target/101865 > * config/rs6000/rs6000-builtin.cc (rs6000_builtin_is_supported): Use > TARGET_POWER8. > * config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Use > OPTION_MASK_POWER8. > * config/rs6000/rs6000-cpus.def (POWERPC_MASKS): Add OPTION_MASK_POWER8. > (ISA_2_7_MASKS_SERVER): Likewise. > * config/rs6000/rs6000.cc (rs6000_option_override_internal): Update > comment. Use OPTION_MASK_POWER8 and TARGET_POWER8. > * config/rs6000/rs6000.h (TARGET_SYNC_HI_QI): Use TARGET_POWER8. > * config/rs6000/rs6000.md (define_attr "isa"): Add p8. > (define_attr "enabled"): Handle it. > (define_insn "prefetch"): Use TARGET_POWER8. > * config/rs6000/rs6000.opt (mdo-not-use-this-option): New. > > gcc/testsuite/ > PR target/101865 > * gcc.target/powerpc/predefined-p7-novsx.c: New test. > * gcc.target/powerpc/predefined-p8-noaltivec-novsx.c: New test. > * gcc.target/powerpc/predefined-p8-noaltivec.c: New test. > * gcc.target/powerpc/predefined-p8-novsx.c: New test. > * gcc.target/powerpc/predefined-p8-pragma-vsx.c: New test. > * gcc.target/powerpc/predefined-p9-novsx.c: New test. > > diff --git a/gcc/config/rs6000/rs6000-builtin.cc b/gcc/config/rs6000/rs6000-builtin.cc > index e7d6204074c..320affd79e3 100644 > --- a/gcc/config/rs6000/rs6000-builtin.cc > +++ b/gcc/config/rs6000/rs6000-builtin.cc > @@ -165,7 +165,7 @@ rs6000_builtin_is_supported (enum rs6000_gen_builtins fncode) > case ENB_P7_64: > return TARGET_POPCNTD && TARGET_POWERPC64; > case ENB_P8: > - return TARGET_DIRECT_MOVE; > + return TARGET_POWER8; > case ENB_P8V: > return TARGET_P8_VECTOR; > case ENB_P9: > diff --git a/gcc/config/rs6000/rs6000-c.cc b/gcc/config/rs6000/rs6000-c.cc > index 647f20de7f2..bd493ab87c5 100644 > --- a/gcc/config/rs6000/rs6000-c.cc > +++ b/gcc/config/rs6000/rs6000-c.cc > @@ -429,7 +429,7 @@ rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT flags) > rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR6"); > if ((flags & OPTION_MASK_POPCNTD) != 0) > rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR7"); > - if ((flags & OPTION_MASK_P8_VECTOR) != 0) > + if ((flags & OPTION_MASK_POWER8) != 0) > rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR8"); > if ((flags & OPTION_MASK_MODULO) != 0) > rs6000_define_or_undefine_macro (define_p, "_ARCH_PWR9"); > diff --git a/gcc/config/rs6000/rs6000-cpus.def b/gcc/config/rs6000/rs6000-cpus.def > index 45dd5a85901..6ee678e69c3 100644 > --- a/gcc/config/rs6000/rs6000-cpus.def > +++ b/gcc/config/rs6000/rs6000-cpus.def > @@ -47,6 +47,7 @@ > fusion here, instead set it in rs6000.cc if we are tuning for a power8 > system. */ > #define ISA_2_7_MASKS_SERVER (ISA_2_6_MASKS_SERVER \ > + | OPTION_MASK_POWER8 \ > | OPTION_MASK_P8_VECTOR \ > | OPTION_MASK_CRYPTO \ > | OPTION_MASK_EFFICIENT_UNALIGNED_VSX \ > @@ -130,6 +131,7 @@ > | OPTION_MASK_MODULO \ > | OPTION_MASK_MULHW \ > | OPTION_MASK_NO_UPDATE \ > + | OPTION_MASK_POWER8 \ > | OPTION_MASK_P8_FUSION \ > | OPTION_MASK_P8_VECTOR \ > | OPTION_MASK_P9_MINMAX \ > diff --git a/gcc/config/rs6000/rs6000.cc b/gcc/config/rs6000/rs6000.cc > index c241371147c..117999613d8 100644 > --- a/gcc/config/rs6000/rs6000.cc > +++ b/gcc/config/rs6000/rs6000.cc > @@ -3807,11 +3807,10 @@ rs6000_option_override_internal (bool global_init_p) > "-mmultiple"); > } > > - /* If little-endian, default to -mstrict-align on older processors. > - Testing for direct_move matches power8 and later. */ > + /* If little-endian, default to -mstrict-align on older processors. */ > if (!BYTES_BIG_ENDIAN > && !(processor_target_table[tune_index].target_enable > - & OPTION_MASK_P8_VECTOR)) > + & OPTION_MASK_POWER8)) > rs6000_isa_flags |= ~rs6000_isa_flags_explicit & OPTION_MASK_STRICT_ALIGN; > > /* Add some warnings for VSX. */ > @@ -3897,7 +3896,7 @@ rs6000_option_override_internal (bool global_init_p) > else > rs6000_isa_flags |= ISA_3_0_MASKS_SERVER; > } > - else if (TARGET_P8_VECTOR || TARGET_DIRECT_MOVE || TARGET_CRYPTO) > + else if (TARGET_P8_VECTOR || TARGET_POWER8 || TARGET_CRYPTO) > rs6000_isa_flags |= (ISA_2_7_MASKS_SERVER & ~ignore_masks); > else if (TARGET_VSX) > rs6000_isa_flags |= (ISA_2_6_MASKS_SERVER & ~ignore_masks); > diff --git a/gcc/config/rs6000/rs6000.h b/gcc/config/rs6000/rs6000.h > index 77d045c9f6e..2cde2e329b0 100644 > --- a/gcc/config/rs6000/rs6000.h > +++ b/gcc/config/rs6000/rs6000.h > @@ -490,7 +490,7 @@ extern int rs6000_vector_align[]; > memory support. */ > #define TARGET_SYNC_HI_QI (TARGET_QUAD_MEMORY \ > || TARGET_QUAD_MEMORY_ATOMIC \ > - || TARGET_DIRECT_MOVE) > + || TARGET_POWER8) > > #define TARGET_SYNC_TI TARGET_QUAD_MEMORY_ATOMIC > > diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md > index bc8bc6ab060..ac5651d7420 100644 > --- a/gcc/config/rs6000/rs6000.md > +++ b/gcc/config/rs6000/rs6000.md > @@ -355,7 +355,7 @@ (define_attr "cpu" > (const (symbol_ref "(enum attr_cpu) rs6000_tune"))) > > ;; The ISA we implement. > -(define_attr "isa" "any,p5,p6,p7,p7v,p8v,p9,p9v,p9kf,p9tf,p10" > +(define_attr "isa" "any,p5,p6,p7,p7v,p8,p8v,p9,p9v,p9kf,p9tf,p10" > (const_string "any")) > > ;; Is this alternative enabled for the current CPU/ISA/etc.? > @@ -380,6 +380,10 @@ (define_attr "enabled" "" > (match_test "TARGET_VSX")) > (const_int 1) > > + (and (eq_attr "isa" "p8") > + (match_test "TARGET_POWER8")) > + (const_int 1) > + > (and (eq_attr "isa" "p8v") > (match_test "TARGET_P8_VECTOR")) > (const_int 1) > @@ -14305,7 +14309,7 @@ (define_insn "prefetch" > AIX does not support the dcbtstt and dcbtt extended mnemonics. > The AIX assembler does not support the three operand form of dcbt > and dcbtst on Power 7 (-mpwr7). */ > - int inst_select = INTVAL (operands[2]) || !TARGET_DIRECT_MOVE; > + int inst_select = INTVAL (operands[2]) || !TARGET_POWER8; > > if (REG_P (operands[0])) > { > diff --git a/gcc/config/rs6000/rs6000.opt b/gcc/config/rs6000/rs6000.opt > index dfd5051b964..457c7d05e7e 100644 > --- a/gcc/config/rs6000/rs6000.opt > +++ b/gcc/config/rs6000/rs6000.opt > @@ -470,6 +470,10 @@ Save the TOC in the prologue for indirect calls rather than inline. > mvsx-timode > Target RejectNegative Undocumented Ignore > > +;; This option exists only to create its MASK. It is not intended for users. > +mdo-not-use-this-option > +Target RejectNegative Mask(POWER8) Var(rs6000_isa_flags) WarnRemoved > + I can understand the given name is to avoid users to use it, but it looks odd, personally I'm inclined to mpower8 (or even mpower8-internal) even if it's more likely to be used but it's a bit more meaningful (especially we already have mpower10), theoretically speaking it's undocumented users shouldn't use it at all. And I think we want explicit "Undocumented" here, and WarnRemoved seems not suitable here since it's for some option which worked before but then wasn't supported any longer, but this one is new, may be "Warn(Don't use %qs)" instead? [snip...] > diff --git a/gcc/testsuite/gcc.target/powerpc/predefined-p8-pragma-vsx.c b/gcc/testsuite/gcc.target/powerpc/predefined-p8-pragma-vsx.c > new file mode 100644 > index 00000000000..cb3cc16d968 > --- /dev/null > +++ b/gcc/testsuite/gcc.target/powerpc/predefined-p8-pragma-vsx.c > @@ -0,0 +1,101 @@ > +/* PR target/101865 */ > +/* { dg-do run } */ > +/* { dg-require-effective-target p8vector_hw } */ > +/* { dg-options "-mdejagnu-cpu=power8 -mvsx -O2" } */ Nit: -O2 looks useless and can be dropped? The others look good to me, thanks! BR, Kewen > + > +/* Verify we correctly set our predefined macros in the face of #pragma usage. */ > + > +#include > +#include > + > +volatile int power8_set; > +volatile int vsx_set; > +