From patchwork Thu Oct 20 16:29:11 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "H.J. Lu" X-Patchwork-Id: 6286 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4242:0:0:0:0:0 with SMTP id s2csp204453wrr; Thu, 20 Oct 2022 09:29:26 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7ZROr503G5oenpQVEW497IEZJL8sACV5yX6uhBNNsprS+pegPe20yu0iMPhmJ4jyA/f/fz X-Received: by 2002:a17:906:ef8c:b0:78d:96b9:a0ad with SMTP id ze12-20020a170906ef8c00b0078d96b9a0admr11854752ejb.529.1666283366846; Thu, 20 Oct 2022 09:29:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666283366; cv=none; d=google.com; s=arc-20160816; b=XQ8WJas4Dewy3aXRjMQjg1oFOQAQqkX0bjVOm+KTKiJFmIBRIhQw/4tD7a5/B3W//N OUfgJvXIsmnMHLLJUmmZqAHR1acVQ7O12+jrp1lsaC+ZNJgJ0hLMWvxoK1riLOXim9jc gPhSXrx4NdYjZ2s0KToqt91OhxErEjN4P3TViom4U4rtNdwaoBbENnJJW2uMTWWtfId0 tDtvRX72yPnoaVEYrke8VHVqxHOuZY4AE7CyweY61cJzfrxIhuyWr1gPKHVd8FlXfvya CtHyyc75ate8zEvyjW/IYPd2TNq/itqfnvuHeqbbhqBCRQxzZPXJ/OR7bj5ncrEI0jwH a6QQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=X8FOD34CT8YoUE26/PJSf3CNjxgX2nzJtHa2dA4mDGI=; b=fI4V5sYmB0v55l40NJkxX1YJpaZNp3TrGApogQ/CUotKbgQPJpeFpNkSoPVRoAKslt w5iFx4jjY2ghxWIiMbv+zg3S9Dd1vCN3+HPluVBjssu6TWi6NCLpmlghdYRmboifnu5F wQVeX71ihT+LtVn6AZVUP6NLnpUPXLiU9sNprJYlBTIEkXsB4jFeU9/4aOQyO/5sON8K UlNIlzcQjXNwEibGNwT35RaILi6wYSHC7lzk6B5wGCcm4/VeaGIS8P8zZC4Qm3P2AInN dJs2v0K4YdI9VUbXAJ6QuKpm8LTSyvSmpE73ni5jdW7O9tR2UYi7AcoD7sEjFTPbTrJ8 I6ug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=QgtwNE6s; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id b10-20020a056402084a00b0045a11b60c57si21410580edz.121.2022.10.20.09.29.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Oct 2022 09:29:26 -0700 (PDT) Received-SPF: pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@sourceware.org header.s=default header.b=QgtwNE6s; spf=pass (google.com: domain of binutils-bounces+ouuuleilei=gmail.com@sourceware.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="binutils-bounces+ouuuleilei=gmail.com@sourceware.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id A0285384D183 for ; Thu, 20 Oct 2022 16:29:25 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A0285384D183 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1666283365; bh=X8FOD34CT8YoUE26/PJSf3CNjxgX2nzJtHa2dA4mDGI=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=QgtwNE6s4VuFo0a0DLh0N15FXJLRKq+BmP//FpThGuPm/MQnzwrEhQ22rF7PJkDbp k27+7EiSe25p/G3aeOWgEFx33X+MHx2/O0Lfv53kAD5v9zJqJwo7L3sjhbjTkmFKTF 6A60tP5QfXyBr7z+KJY7DCpDbFEXki0T4xsZoY3Q= X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-pj1-x1033.google.com (mail-pj1-x1033.google.com [IPv6:2607:f8b0:4864:20::1033]) by sourceware.org (Postfix) with ESMTPS id 22E4B384F001 for ; Thu, 20 Oct 2022 16:29:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 22E4B384F001 Received: by mail-pj1-x1033.google.com with SMTP id z5-20020a17090a8b8500b00210a3a2364fso2715037pjn.0 for ; Thu, 20 Oct 2022 09:29:15 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=X8FOD34CT8YoUE26/PJSf3CNjxgX2nzJtHa2dA4mDGI=; b=CU4nCbgDVC2fg2X5prZ6m1hIfVNq1y8204c9lBqw6FE07PkqvcpWSvE+Th8TK643LB TkTKMw91SmXOWYmDieLGnwfqc0PnF3MnWtGxoySCJ1vVct+sqCDPHYfCga+LfQDB4+B+ d6YTfUdSkPwwk+iAoNDJ+e0eKEsamM+63wJYaQThy9jhwkOOBbsNom6jolM4CVwJCl0A EPRpCvfSmDj0oImYigORABa+P5NotZ+/KBXV6cb184T9BV5R42WHunyjMY2dbaht3/ox xstaAtYXY3bmbM9ecuUXKwnIPriTTFB5ppEuPOM1ZkOsY3Xwf6+c8pIgQEFt23G4OHBR BeVA== X-Gm-Message-State: ACrzQf1CNgz8IDdx4QvUsetuFKx3UB1AFBHXSzSykb9IYmw1OOBtmqji 9Uh2ilbMA7bttonwpD1+CzYhwvh0IZI= X-Received: by 2002:a17:90a:cb8b:b0:211:7744:d155 with SMTP id a11-20020a17090acb8b00b002117744d155mr5709118pju.187.1666283353637; Thu, 20 Oct 2022 09:29:13 -0700 (PDT) Received: from gnu-tgl-3.localdomain ([172.56.30.186]) by smtp.gmail.com with ESMTPSA id o15-20020a6548cf000000b0043c22e926f8sm11864701pgs.84.2022.10.20.09.29.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Oct 2022 09:29:13 -0700 (PDT) Received: from gnu-tgl-3.. (localhost [IPv6:::1]) by gnu-tgl-3.localdomain (Postfix) with ESMTP id 92A0FC00F9 for ; Thu, 20 Oct 2022 09:29:11 -0700 (PDT) To: binutils@sourceware.org Subject: [PATCH] x86: Check VEX/EVEX encoding before checking vector operands Date: Thu, 20 Oct 2022 09:29:11 -0700 Message-Id: <20221020162911.1113338-1-hjl.tools@gmail.com> X-Mailer: git-send-email 2.37.3 MIME-Version: 1.0 X-Spam-Status: No, score=-3024.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, 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 X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: "H.J. Lu via Binutils" From: "H.J. Lu" Reply-To: "H.J. Lu" Errors-To: binutils-bounces+ouuuleilei=gmail.com@sourceware.org Sender: "Binutils" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747224747592499553?= X-GMAIL-MSGID: =?utf-8?q?1747224747592499553?= Since commit 837e225ba1992f9745e5bbbd5e8443243a7f475f Author: Jan Beulich Date: Thu Oct 20 10:01:12 2022 +0200 x86: re-work AVX-VNNI support moved AVX-VNNI after AVX512-VNNI, vector Disp8 is applied even when VEX encoding is selected. Check VEX/EVEX encoding before checking vector operands to avoid vector Disp8 with VEX encoding. PR gas/29708 * config/tc-i386.c (match_template): Check VEX/EVEX encoding before checking vector operands. * testsuite/gas/i386/avx-vnni.d: Updated. * testsuite/gas/i386/x86-64-avx-vnni.d: Likewise. * testsuite/gas/i386/avx-vnni.s: Add a Disp32 test. * testsuite/gas/i386/x86-64-avx-vnni.s: Likewise. --- gas/config/tc-i386.c | 8 ++++---- gas/testsuite/gas/i386/avx-vnni.d | 1 + gas/testsuite/gas/i386/avx-vnni.s | 1 + gas/testsuite/gas/i386/x86-64-avx-vnni.d | 1 + gas/testsuite/gas/i386/x86-64-avx-vnni.s | 1 + 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index 526802ed308..02905c17021 100644 --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -6821,15 +6821,15 @@ match_template (char mnem_suffix) slip through to break. */ } - /* Check if vector operands are valid. */ - if (check_VecOperands (t)) + /* Check if VEX/EVEX encoding requirements can be satisfied. */ + if (VEX_check_encoding (t)) { specific_error = progress (i.error); continue; } - /* Check if VEX/EVEX encoding requirements can be satisfied. */ - if (VEX_check_encoding (t)) + /* Check if vector operands are valid. */ + if (check_VecOperands (t)) { specific_error = progress (i.error); continue; diff --git a/gas/testsuite/gas/i386/avx-vnni.d b/gas/testsuite/gas/i386/avx-vnni.d index 47e3118b1ce..4dc353e89fd 100644 --- a/gas/testsuite/gas/i386/avx-vnni.d +++ b/gas/testsuite/gas/i386/avx-vnni.d @@ -39,4 +39,5 @@ Disassembly of section .text: +[a-f0-9]+: c4 e2 7d 50 c0 \{vex\} vpdpbusd %ymm0,%ymm0,%ymm0 +[a-f0-9]+: c4 e2 79 50 c0 \{vex\} vpdpbusd %xmm0,%xmm0,%xmm0 +[a-f0-9]+: 62 f2 5d 08 50 d2 vpdpbusd %xmm2,%xmm4,%xmm2 + +[a-f0-9]+: c4 e2 59 50 91 f0 07 00 00 \{vex\} vpdpbusd 0x7f0\(%ecx\),%xmm4,%xmm2 #pass diff --git a/gas/testsuite/gas/i386/avx-vnni.s b/gas/testsuite/gas/i386/avx-vnni.s index e2b793b24a6..6260330cca4 100644 --- a/gas/testsuite/gas/i386/avx-vnni.s +++ b/gas/testsuite/gas/i386/avx-vnni.s @@ -37,3 +37,4 @@ _start: .arch default .arch .avx_vnni vpdpbusd %xmm2, %xmm4, %xmm2 + {vex3} vpdpbusd 2032(%ecx), %xmm4, %xmm2 diff --git a/gas/testsuite/gas/i386/x86-64-avx-vnni.d b/gas/testsuite/gas/i386/x86-64-avx-vnni.d index 6b3acab5d54..1fa08a5c64a 100644 --- a/gas/testsuite/gas/i386/x86-64-avx-vnni.d +++ b/gas/testsuite/gas/i386/x86-64-avx-vnni.d @@ -36,4 +36,5 @@ Disassembly of section .text: +[a-f0-9]+: c4 e2 59 53 11 \{vex\} vpdpwssds \(%rcx\),%xmm4,%xmm2 +[a-f0-9]+: 62 b2 5d 08 53 d6 vpdpwssds %xmm22,%xmm4,%xmm2 +[a-f0-9]+: 62 d2 5d 08 50 d4 vpdpbusd %xmm12,%xmm4,%xmm2 + +[a-f0-9]+: c4 e2 59 50 91 f0 07 00 00 \{vex\} vpdpbusd 0x7f0\(%rcx\),%xmm4,%xmm2 #pass diff --git a/gas/testsuite/gas/i386/x86-64-avx-vnni.s b/gas/testsuite/gas/i386/x86-64-avx-vnni.s index 95b6dc2ef33..9c57e6f6a97 100644 --- a/gas/testsuite/gas/i386/x86-64-avx-vnni.s +++ b/gas/testsuite/gas/i386/x86-64-avx-vnni.s @@ -19,3 +19,4 @@ _start: .arch .avx_vnni vpdpbusd %xmm12, %xmm4, %xmm2 + {vex3} vpdpbusd 2032(%rcx), %xmm4, %xmm2