From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr1-x441.google.com (mail-wr1-x441.google.com [IPv6:2a00:1450:4864:20::441]) by sourceware.org (Postfix) with ESMTPS id BAA7B385703F for ; Tue, 7 Jul 2020 03:28:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org BAA7B385703F Received: by mail-wr1-x441.google.com with SMTP id s10so43526909wrw.12 for ; Mon, 06 Jul 2020 20:28:38 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=aDo7zREE4tqOKOs6NYi3ZdwSNH+Ez+jisCFcWasW4MA=; b=IuWlSZIgHW/YO5bWXRUuyN3SSYs8OKeXTSR0pcg0oKMZNfxkvN2A+KUEaPhljvFsC7 GWBb2iBqZtpZEC92ZTwvgSdUz71ov6nOxDfvoOTYcnuUfHCMrxK0qn64MtgXULulJ6WF 7eAx4h9kY4MBn52bdeieSnGRWYfC+xkY12TznIn4R+n3KGaCGblgxr53yTeVOiSI4VZ0 K1dF0Q3W3DoABf+vCl0O7ghojt0sKoJbVgbMcVtC7SOMWNN+m2Z4I54l9CcI4L4F0am6 bhZVdBGInBc2HomGixv9nGxwXh6C1LFH4Xr0DqsRxpl5FmHMl38Ch8QAovOgelVWsr74 oJhA== X-Gm-Message-State: AOAM5309Fb4xpWExLkodzmR1YYNz2s3cT2Eynj8zAAHVEna28Fz86y81 kWYVjYoreCzAM30/qjdzr9Me6pMGLi4R8G8yA+HtnsK5 X-Google-Smtp-Source: ABdhPJwc9STEimvTEK27IMPAf9QD5aq4Z2Edp84tL+MjBjx0fNO+1wf+R5BfexAKiA59vubLJ7I/K1Vtj6Eg/1BDVHo= X-Received: by 2002:a05:6000:12c5:: with SMTP id l5mr56147909wrx.219.1594092517622; Mon, 06 Jul 2020 20:28:37 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Hongyu Wang Date: Tue, 7 Jul 2020 11:24:58 +0800 Message-ID: Subject: Re: [PATCH] Enable GCC support for AMX To: gcc-patches@gcc.gnu.org, kirill.yukhin@gmail.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-0.7 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 07 Jul 2020 03:28:40 -0000 Hi Kirill, could you help review this patch? Hongyu Wang =E4=BA=8E2020=E5=B9=B47=E6=9C=886=E6= =97=A5=E5=91=A8=E4=B8=80 =E4=B8=8A=E5=8D=889:58=E5=86=99=E9=81=93=EF=BC=9A > > Hi: > > This patch is about to support Intel Advanced Matrix Extensions (AMX) > which will be enabled in GLC. > > AMX is a new 64-bit programming paradigm consisting of two > compo nents: a set of 2-dimensional registers (tiles) representing > sub-arrays from a larger 2-dimensional memory image, > and an accelerator able to operate on tiles > > Supported instructions are > > AMX-TILE:ldtilecfg/sttilecfg/tileloadd/tileloaddt1/tilezero/tilerelease > AMX-INT8:tdpbssd/tdpbsud/tdpbusd/tdpbuud > AMX-BF16:tdpbf16ps > > The intrinsics adopts constant tile register number as its input paramete= rs. > > For detailed information, please refer to > https://software.intel.com/content/dam/develop/public/us/en/documents/arc= hitecture-instruction-set-extensions-programming-reference.pdf > > Bootstrap ok, regression test on i386/x86 backend is ok. > > OK for master? > > gcc/ChangeLog > > * common/config/i386/i386-common.c (OPTION_MASK_ISA2_AMX_TILE_SET, > OPTION_MASK_ISA2_AMX_INT8_SET, OPTION_MASK_ISA2_AMX_BF16_SET, > OPTION_MASK_ISA2_AMX_TILE_UNSET, > OPTION_MASK_ISA2_AMX_INT8_UNSET, OPTION_MASK_ISA2_AMX_BF16_UNSET): > New marcos. > (ix86_handle_option): Hanlde -mamx-tile, -mamx-int8, -mamx-bf16. > * common/config/i386/i386-cpuinfo.h (processor_types): Add > FEATURE_AMX_TILE, FEATURE_AMX_INT8, FEATURE_AMX_BF16. > * common/config/i386/cpuinfo.h (XSTATE_TILECFG, > XSTATE_TILEDATA, XCR_AMX_ENABLED_MASK): New macro. > (get_available_features): Enable AMX features only if > their states are suoorited by OSXSAVE. > * common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY > for amx-tile, amx-int8, amx-bf16. > * config.gcc: Add amxtileintrin.h, amxint8intrin.h, > amxbf16intrin.h to extra headers. > * config/i386/amxbf16intrin.h: New file. > * config/i386/amxint8intrin.h: Ditto. > * config/i386/amxtileintrin.h: Ditto. > * config/i386/cpuid.h (bit_AMX_BF16, bit_AMX_TILE, bit_AMX_INT8): > New macro. > * config/i386/i386-c.c (ix86_target_macros_internal): Define > __AMX_TILE__, __AMX_INT8__, AMX_BF16__. > * config/i386/i386-options.c (ix86_target_string): Add > -mamx-tile, -mamx-int8, -mamx-bf16. > (ix86_option_override_internal): Handle AMX-TILE, > AMX-INT8, AMX-BF16. > * config/i386/i386.h (TARGET_AMX_TILE, TARGET_AMX_TILE_P, > TARGET_AMX_INT8, TARGET_AMX_INT8_P, TARGET_AMX_BF16_P, > PTA_AMX_TILE, PTA_AMX_INT8, PTA_AMX_BF16): New macros. > * config/i386/i386.opt: Add -mamx-tile, -mamx-int8, -mamx-bf16. > * config/i386/immintrin.h: Include amxtileintrin.h, > amxint8intrin.h, amxbf16intrin.h. > * doc/invoke.texi: Document -mamx-tile, -mamx-int8, -mamx-bf16. > * doc/extend.texi: Document amx-tile, amx-int8, amx-bf16. > * doc/sourcebuild.texi ((Effective-Target Keywords, Other > hardware attributes): Document amx_int8, amx_tile, amx_bf16. > > gcc/testsuite/ChangeLog > > * lib/target-supports.exp (check_effective_target_amx_tile, > check_effective_target_amx_int8, > check_effective_target_amx_bf16): New proc. > * g++.dg/other/i386-2.C: Add -mamx-tile, -mamx-int8, -mamx-bf16. > * g++.dg/other/i386-3.C: Ditto. > * gcc.target/i386/sse-12.c: Ditto. > * gcc.target/i386/sse-13.c: Ditto. > * gcc.target/i386/sse-14.c: Ditto. > * gcc.target/i386/sse-22.c: Ditto. > * gcc.target/i386/sse-23.c: Ditto. > * gcc.target/i386/funcspec-56.inc: Add new target attribute. > * gcc.target/i386/amxbf16-asmatt-1.c: New test. > * gcc.target/i386/amxint8-asmatt-1.c: Ditto. > * gcc.target/i386/amxtile-asmatt-1.c: Ditto. > * gcc.target/i386/amxbf16-asmintel-1.c: Ditto. > * gcc.target/i386/amxint8-asmintel-1.c: Ditto. > * gcc.target/i386/amxtile-asmintel-1.c: Ditto. > * gcc.target/i386/amxbf16-asmatt-2.c: Ditto. > * gcc.target/i386/amxint8-asmatt-2.c: Ditto. > * gcc.target/i386/amxtile-asmatt-2.c: Ditto. > * gcc.target/i386/amxbf16-asmintel-2.c: Ditto. > * gcc.target/i386/amxint8-asmintel-2.c: Ditto. > * gcc.target/i386/amxtile-asmintel-2.c: Ditto.