From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yb1-xb29.google.com (mail-yb1-xb29.google.com [IPv6:2607:f8b0:4864:20::b29]) by sourceware.org (Postfix) with ESMTPS id 7B6423858D3C for ; Wed, 8 Nov 2023 07:21:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7B6423858D3C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7B6423858D3C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::b29 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699428086; cv=none; b=cd0ESgr5U0otx7/8eOQK+cRJE/E5xquojQ557QsSDzCJ0kbPMuS8Qmk3VTkzHt17qEbCatizFCmFnS0tK9iJiAvVYhPsn+VuQmw+QG/m3v0ra97lnDo37BkmdN2/WcQJTOkuDIPIbFQqAF4xI49mzCOklN/ng0slLmIGuHeBdxI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699428086; c=relaxed/simple; bh=8fAvN2LTwafhrrzH2xPB1dW5s19KunW+qANPScRMDEc=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=GzZzMu/bpDTJ2EyFa92Vnm2TYkALstX0jfTlhGlAAqIt8J2/+DI2P+qe1yiK/+DogjN5Ns9pY7zsIrDcfz8fxH35FFsGkLcZ/rzAtkaVOGmlCUdiia9ltcDgyItDC9yWdA+XiROZE4t6Dtysg52Em/If49HOgE0MihhqhMzW76s= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-yb1-xb29.google.com with SMTP id 3f1490d57ef6-da2e786743aso6819792276.0 for ; Tue, 07 Nov 2023 23:21:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699428084; x=1700032884; darn=gcc.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=OWWl7IfJ8chPF5G2sCqKTx8bZOlRSunlfa4Xw92N+DY=; b=TqPqPVHh/wW3RDvrgUyuMqh9S2DpncTCQy0fQUn16pdbg7M7hrhuSvIedj65ip4z1A Znr8vdGW1XqnyPxl3kNtqe+LMrC1LHfuo7GLwBCPOjTCrMVxXIca5uZl8payDpsszWp6 qu5HrWn/b9oZB8He3GRfzCf2ZWIkhHtXjvh1abaYUcMa+4sOk/oQ5rgopQHPvUehFpkL EeefJJ6T8NvEN6srOPy26MbWkMLUA674x9eZdt2WLX8E6i6wTA05u8sM/yLnP8bZJGir cMqJHuEwxdOJi0ymlQyxnoCJFcbs8ovguIZ0JONsrhmi1cZE694roxi33m6QS4dDDn73 c7Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699428084; x=1700032884; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=OWWl7IfJ8chPF5G2sCqKTx8bZOlRSunlfa4Xw92N+DY=; b=qJZTihF1MWQ+V4cdhp53+yhUM8Nuh+y4tbm1AkNeRMJ/+nsQ+r+Hg/04/vhV7gi1Ck YPIsoZRHwZqL+MaMNL9NIp+2OzJI6UBnP6Hnt0uEBnvvYdiR2dM/Q8dz+8SD/mPjAEes kbxyEi5q0zEfQAitFo8IHMz2kfZnvugSfrE7GQfggluojsBXQsASwulUUCCE4y84p/6G IOuGzqFUJKHWrFtz8BPvf/7woZIdY86TxdsemHYfSruQzwfnUhFe4SRo6oZgDVtufj+j BM6bxopnfCFaZdF65P2PsTMvBpdT9VfWQsgLKDJFUK73K+31cGfNefX3qrzubn2bUY04 iGVQ== X-Gm-Message-State: AOJu0Yz5kn6k3RhFcZr3tgP7EmdX5RaOSkLvP/F0/EIyDbopLqt/omaR oXxJYqdoduOioYhSyhRjV4W7N/1WZuwuQawS1g8= X-Google-Smtp-Source: AGHT+IEblUDcTOW3tAlasliX6Wj9kpddlBUcICjps5y6PxCW0t9z4+iZX58UjPPeJjkkk9seQ8/PgNBADKnMPArM3ds= X-Received: by 2002:a25:f828:0:b0:d9a:3c95:a3dd with SMTP id u40-20020a25f828000000b00d9a3c95a3ddmr960350ybd.63.1699428083755; Tue, 07 Nov 2023 23:21:23 -0800 (PST) MIME-Version: 1.0 References: <20231107073321.479349-1-hongyu.wang@intel.com> In-Reply-To: <20231107073321.479349-1-hongyu.wang@intel.com> From: Hongtao Liu Date: Wed, 8 Nov 2023 15:21:12 +0800 Message-ID: Subject: Re: [PATCH] [i386] APX: Fix ICE due to movti postreload splitter [PR112394] To: Hongyu Wang Cc: gcc-patches@gcc.gnu.org, ubizjak@gmail.com, hongtao.liu@intel.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,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 Tue, Nov 7, 2023 at 3:33=E2=80=AFPM Hongyu Wang = wrote: > > Hi, > > When APX EGPR enabled, the TImode move pattern *movti_internal allows > move between gpr and sse reg using constraint pair ("r","Yd"). Then a > post-reload splitter transform such move to vec_extractv2di, while under > -msse4.1 -mno-avx EGPR is not allowed for its enabled alternative, which > caused ICE that insn does not match the constraint. To prevent such ICE, > we need to adjust the constraint correspond to "Yd". Add a new "jc" > constraint to disable EGPR under -mno-avx. > > Bootstrapped and regtseted on x86_64-pc-linux-gnu{-m32,}. > > OK for trunk? LGTM. > > gcc/ChangeLog: > > PR target/112394 > * config/i386/constraints.md (jc): New constraint that prohibits > EGPR on -mno-avx. > * config/i386/i386.md (*movdi_internal): Change r constraint > corresponds to Yd. > (*movti_internal): Likewise. > > gcc/testsuite/ChangeLog: > > PR target/112394 > * gcc.target/i386/pr112394.c: New test. > --- > gcc/config/i386/constraints.md | 3 +++ > gcc/config/i386/i386.md | 8 ++++---- > gcc/testsuite/gcc.target/i386/pr112394.c | 24 ++++++++++++++++++++++++ > 3 files changed, 31 insertions(+), 4 deletions(-) > create mode 100644 gcc/testsuite/gcc.target/i386/pr112394.c > > diff --git a/gcc/config/i386/constraints.md b/gcc/config/i386/constraints= .md > index f6275740eb2..74c2f0f2d32 100644 > --- a/gcc/config/i386/constraints.md > +++ b/gcc/config/i386/constraints.md > @@ -434,3 +434,6 @@ (define_address_constraint "jb" > (and (match_operand 0 "vsib_address_operand") > (not (and (match_test "TARGET_APX_EGPR") > (match_test "x86_extended_rex2reg_mentioned_p (op)"))))) > + > +(define_register_constraint "jc" > + "TARGET_APX_EGPR && !TARGET_AVX ? GENERAL_GPR16 : GENERAL_REGS") > diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md > index ecc74e9994e..ec39c2dd512 100644 > --- a/gcc/config/i386/i386.md > +++ b/gcc/config/i386/i386.md > @@ -2454,8 +2454,8 @@ (define_insn "*movoi_internal_avx" > (set_attr "mode" "OI")]) > > (define_insn "*movti_internal" > - [(set (match_operand:TI 0 "nonimmediate_operand" "=3D!r ,o ,v,v ,v ,m,= ?r,?Yd") > - (match_operand:TI 1 "general_operand" "riFo,re,C,BC,vm,v,Yd,= r"))] > + [(set (match_operand:TI 0 "nonimmediate_operand" "=3D!r ,o ,v,v ,v ,m,= ?jc,?Yd") > + (match_operand:TI 1 "general_operand" "riFo,re,C,BC,vm,v,Yd,= jc"))] > "(TARGET_64BIT > && !(MEM_P (operands[0]) && MEM_P (operands[1]))) > || (TARGET_SSE > @@ -2537,9 +2537,9 @@ (define_split > > (define_insn "*movdi_internal" > [(set (match_operand:DI 0 "nonimmediate_operand" > - "=3Dr ,o ,r,r ,r,m ,*y,*y,?*y,?m,?r,?*y,?Yv,?v,?v,m ,m,?r ,?*Yd,?= r,?v,?*y,?*x,*k,*k ,*r,*m,*k") > + "=3Dr ,o ,r,r ,r,m ,*y,*y,?*y,?m,?r,?*y,?Yv,?v,?v,m ,m,?jc,?*Yd,?= r,?v,?*y,?*x,*k,*k ,*r,*m,*k") > (match_operand:DI 1 "general_operand" > - "riFo,riF,Z,rem,i,re,C ,*y,Bk ,*y,*y,r ,C ,?v,Bk,?v,v,*Yd,r ,?v,= r ,*x ,*y ,*r,*kBk,*k,*k,CBC"))] > + "riFo,riF,Z,rem,i,re,C ,*y,Bk ,*y,*y,r ,C ,?v,Bk,?v,v,*Yd,jc ,?v,= r ,*x ,*y ,*r,*kBk,*k,*k,CBC"))] > "!(MEM_P (operands[0]) && MEM_P (operands[1])) > && ix86_hardreg_mov_ok (operands[0], operands[1])" > { > diff --git a/gcc/testsuite/gcc.target/i386/pr112394.c b/gcc/testsuite/gcc= .target/i386/pr112394.c > new file mode 100644 > index 00000000000..c582f6ea6bd > --- /dev/null > +++ b/gcc/testsuite/gcc.target/i386/pr112394.c > @@ -0,0 +1,24 @@ > +/* PR target/112394 */ > +/* { dg-do compile { target { ! ia32 } } } */ > +/* { dg-options "-msse4.1 -m64 -O -mapxf" } */ > + > +typedef int __attribute__((__vector_size__ (8))) A; > +typedef int __attribute__((__vector_size__ (16))) B; > +typedef char __attribute__((__vector_size__ (4))) C; > +typedef char __attribute__((__vector_size__ (32))) D; > +typedef _Complex __int128 CU; > +typedef _Float16 __attribute__((__vector_size__ (8))) F; > +D d; > +B b; > +CU gcu; > + > +int > +foo (char c, int, int, int, int, CU cu, int x) > +{ > + d /=3D c | d; > + F f =3D __builtin_convertvector (b, F); > + cu /=3D gcu; > + A a =3D (A) f; > + int i =3D cu + x; > + return ((C) a[0])[1] + i + c; > +} > -- > 2.31.1 > --=20 BR, Hongtao