From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id EC81A3857C5E for ; Fri, 4 Nov 2022 09:54:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org EC81A3857C5E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.96,137,1665475200"; d="xz'?scan'208";a="86072078" Received: from orw-gwy-02-in.mentorg.com ([192.94.38.167]) by esa4.mentor.iphmx.com with ESMTP; 04 Nov 2022 01:54:15 -0800 IronPort-SDR: KOgyv6p1nZLn+Sg8Sjmh99q4eyWtkzmdocoa6OGWfzsw8ecE2H2u2fW3+sHwzKM4gz9358Ofi2 LAbT3oeMkk5qJ/hxEtd+XtmkEhrGBC3SXqQ2+9o8ENpoe26v5U2Rrbi0ykrSjTEO+Nv3WhvPtC XLEYb8SR/TdUCETcGdICTQoK9D1NJA0yyY6oZMnS2eEku3ho27MLHALPWb0Hs2Jb54w65jP4S+ XpzgmtvN0uur8YvLRD256uE0yrj48EZ7DAwfSKlaHwTrMP3esuA9Rh2CDBD5uBWK4oODgNEZus yu8= From: Thomas Schwinge To: CC: Jakub Jelinek , Tobias Burnus , "H.J. Lu" , Hongtao Liu Subject: Remove support for Intel MIC offloading In-Reply-To: <878rladxie.fsf@dem-tschwing-1.ger.mentorg.com> References: <499b9ae2-1365-a954-ed5e-35aede5d0def@suse.cz> <20211108085918.GH2710@tucnak> <3376e0dd-9f8e-ebac-eaef-4f02865807c3@suse.cz> <87a65qhhk0.fsf@euler.schwinge.homeip.net> <878rladxie.fsf@dem-tschwing-1.ger.mentorg.com> User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/27.1 (x86_64-pc-linux-gnu) Date: Fri, 4 Nov 2022 10:54:02 +0100 Message-ID: <87h6zf2gg5.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-15.mgc.mentorg.com (139.181.222.15) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,KAM_SHORT,SPF_HELO_PASS,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: --=-=-= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Hi! On 2022-10-20T22:56:57+0200, I wrote: > Hi Jakub, Tobias! > > On 2022-10-20T13:15:43+0200, I wrote: >> I'm proposing the attached "Remove support for Intel MIC offloading" > > Can you please confirm: Taking your non-response as silent approval, I've now pushed to master branch commit e4cba49413ca429dc82f6aa2e88129ecb3fdd943 "Remove support for Intel MIC offloading", see attached (generated with 'git format-patch --irreversible-delete', 'xz -9'). Gr=C3=BC=C3=9Fe Thomas >> --- a/gcc/config/i386/i386-options.cc >> +++ b/gcc/config/i386/i386-options.cc >> @@ -307,10 +307,6 @@ ix86_omp_device_kind_arch_isa (enum omp_device_kind= _arch_isa trait, >> case omp_device_kind: >> return strcmp (name, "cpu") =3D=3D 0; >> case omp_device_arch: >> -#ifdef ACCEL_COMPILER >> - if (strcmp (name, "intel_mic") =3D=3D 0) >> - return 1; >> -#endif >> if (strcmp (name, "x86") =3D=3D 0) >> return 1; >> if (TARGET_64BIT) > > Only remove this bit as quoted, or actually remove the whole function > (used for 'gcc/config/i386/i386.cc:TARGET_OMP_DEVICE_KIND_ARCH_ISA')? > But if I do the latter, I get a few FAILs in compiler-side > '[...]/gomp/declare-variant-[...]' test cases, and > 'libgomp.c/declare-variant-1.c'. > > You, Jakub, had originally added that in > Subversion r277662 (Git commit 9ba66bf5b9c69e0e2bcd1b2ab88160bf9b2aa417) > "targetm.omp.device_kind_arch_isa and OpenMP declare variant kind/arch/is= a handling". > Reading these emails, and the discussion in > > "[OpenMP] Context selectors missing for PowerPC", I infer that we > generally would like to keep this stuff, for non-offloading OpenMP use, > and thus indeed just remove the Intel MIC parts (as quoted above). > > Thus: > >> --- a/libgomp/libgomp.texi >> +++ b/libgomp/libgomp.texi >> @@ -4303,10 +4303,6 @@ offloading devices (it's not clear if they should= be): >> >> @multitable @columnfractions .60 .10 .25 >> @headitem @code{arch} @tab @code{kind} @tab @code{isa} >> -@item @code{intel_mic}, @code{x86}, @code{x86_64}, @code{i386}, @code{i= 486}, >> - @code{i586}, @code{i686}, @code{ia32} >> - @tab @code{host} >> - @tab See @code{-m...} flags in ``x86 Options'' (without @code{-m}= ) >> @item @code{amdgcn}, @code{gcn} >> @tab @code{gpu} >> @tab See @code{-march=3D} in ``AMD GCN Options'' > > ..., I should also restore this, and only remove the Intel MIC mention. > > On the other hand: > >> diff --git a/gcc/config/i386/t-omp-device b/gcc/config/i386/t-omp-device >> deleted file mode 100644 > | index cfb41ed71ce..00000000000 > | --- gcc/config/i386/t-omp-device > | +++ /dev/null > | @@ -1,6 +0,0 @@ > | -omp-device-properties-i386: $(srcdir)/config/i386/i386-options.cc > | - echo kind: cpu > $@ > | - echo arch: intel_mic x86 x86_64 i386 i486 i586 i686 ia32 >> $@ > | - echo isa: sse4 `sed -n '/^static struct ix86_target_opts isa2\?_o= pts\[\] =3D/,/^};/p' \ > | - $(srcdir)/config/i386/i386-options.cc | \ > | - sed -n 's/",.*$$//;s/^ { "-m//p'` >> $@ > > Indeed remove this whole file, or just Intel MIC, again? Here, as I > understand, this is fine to remove completely, as is only used if there > is an actual offload compiler (which now there isn't anymore); unused as > of here: > >> --- a/gcc/configure.ac >> +++ b/gcc/configure.ac > >> @@ -1153,10 +1147,6 @@ for tgt in `echo $enable_offload_targets | sed 's= /,/ /g'`; do >> >> enable_offloading=3D1 >> case "$tgt" in >> - *-intelmic-* | *-intelmicemul-*) >> - omp_device_property=3Domp-device-properties-i386 >> - omp_device_property_tmake_file=3D"${omp_device_property_tmake_file= } \$(srcdir)/config/i386/t-omp-device" >> - ;; >> amdgcn*) >> omp_device_property=3Domp-device-properties-gcn >> omp_device_property_tmake_file=3D"${omp_device_property_tmake_file= } \$(srcdir)/config/gcn/t-omp-device" > > So I assume that is OK the way I had it prepared. > > > Gr=C3=BC=C3=9Fe > Thomas ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955 --=-=-= Content-Type: application/x-xz Content-Disposition: attachment; filename="0001-Remove-support-for-Intel-MIC-offloading.patch.xz" Content-Transfer-Encoding: base64 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 --=-=-=--