From patchwork Fri Dec 13 08:11:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Jiang, Haochen" X-Patchwork-Id: 102963 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id AA71D3857C7F for ; Fri, 13 Dec 2024 08:12:27 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.12]) by sourceware.org (Postfix) with ESMTPS id 1D15E3858D35 for ; Fri, 13 Dec 2024 08:11:57 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1D15E3858D35 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 1D15E3858D35 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=198.175.65.12 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734077517; cv=none; b=Vxce2fVUkSo3rYGY+Pj++P+3mVFtJD8rl/6AriZxNUUSWAeFWfordSYebjiB9oaZp+IWtnIOW6owgnh8LS+gEJGoCFNAAAZNXAVwh0dHzZMKCcbVlxKfEzRl8gEjaxUhdfxmbyTJQOJEROTc0IIdR2YBAtG2YXTAnZx6CZ+Z6ZY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1734077517; c=relaxed/simple; bh=oWiIX5FaU1DH5Ezq7zCUYSw37mBY5ItEf3nvhuRLRVA=; h=DKIM-Signature:From:To:Subject:Date:Message-Id:MIME-Version; b=DiT7CCYmfhsiq5HhpsReg6//CT6xLQXnJ/h/JBAIHOwltOplkRgye++itWYaPozWKjYhEbt0Z8Ip4TGjkBx/BkeHNz33HI3XYwb0y3uDXpUqOKSw1tXq7i0mV/dW1UlxDcV4ejFWdusLfnDIPfM51C9t86rbxNOzeXEccU7+wMA= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1D15E3858D35 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=XSyu+3Q/ DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1734077517; x=1765613517; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=oWiIX5FaU1DH5Ezq7zCUYSw37mBY5ItEf3nvhuRLRVA=; b=XSyu+3Q/vHxy29iPkGJyBkUgP8xeEnLUS5VR8UZqTJkOfNeYcS8rFo1p IS05vrS3bb6qKWehBZFaOFX7V0ygDObisTgl80lRY48UeH36eY5YSwZEu FPmTVINHba8YW9I/zjVaS60t9/A8kFPe6/7Jp/xRnct5646UxR2T1JQ9x I/H5UVVWuVHna+Ryh2y+mWy5anWV7Gm9FKYZsM+jTV3JkQI7K9GSMyu++ +q6r6x7i5ptBzlNkt6FTytumW0sN5FiD+Fn2NFdpeudlZ38pXbqPKw+yS NlbIU7i1yhZP0Fwmjx6MyZYxWmpXncyVW0ngNT+cykSqF+AKRkly510kM w==; X-CSE-ConnectionGUID: ROuDXm39SrSqht5gHSPT3g== X-CSE-MsgGUID: dU1giIOXR+2gAL6rewfkIA== X-IronPort-AV: E=McAfee;i="6700,10204,11278"; a="45908616" X-IronPort-AV: E=Sophos;i="6.12,214,1728975600"; d="scan'208";a="45908616" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 13 Dec 2024 00:11:56 -0800 X-CSE-ConnectionGUID: YnBEBnWeQS2TqlUScueSYw== X-CSE-MsgGUID: E2rzC+hnR4+CjlCIphYnXQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.12,230,1728975600"; d="scan'208";a="127281108" Received: from shliclel4217.sh.intel.com ([10.239.240.127]) by orviesa002.jf.intel.com with ESMTP; 13 Dec 2024 00:11:54 -0800 From: Haochen Jiang To: binutils@sourceware.org Cc: hjl.tools@gmail.com, jbeulich@suse.com, zewei.mo@pitt.edu, "Mo, Zewei" , Jun Zhang Subject: [PATCH v2] Support Intel AVX10.2 minmax, vector copy and compare instructions Date: Fri, 13 Dec 2024 16:11:52 +0800 Message-Id: <20241213081152.2812490-1-haochen.jiang@intel.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, LOTS_OF_MONEY, SPF_HELO_NONE, SPF_NONE, 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.30 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org From: "Mo, Zewei" Hi all, This is the v2 patch for AVX10.2 minmax, vector copy and compare insts. Changes and patch description are embedded below. Ok for trunk? Thx, Haochen --- Changes in v2: - Refactor testcases to reduce redundancy. - Fix the typo in disassembler table pass. - Remove the addition for . --- In this patch, we will support AVX10.2 minmax, vector copy and compare instructions. This will finish the new instruction form support for AVX10.2. Most of them are new instructions forms except for vmovd and vmovw, which are extended usage from the old ones. In current documentation, it is still VMINMAXNEPBF16, but it will change to VMINMAXPBF16 eventually. gas/ChangeLog: * NEWS: Mention AVX10.2. * testsuite/gas/i386/i386.exp: Add AVX10.2 tests. * testsuite/gas/i386/x86-64.exp: Ditto. * testsuite/gas/i386/avx10_2-256-5-intel.d: New test. * testsuite/gas/i386/avx10_2-256-miscs.d: Ditto. * testsuite/gas/i386/avx10_2-256-miscs.s: Ditto. * testsuite/gas/i386/avx10_2-512-miscs-intel.d: Ditto. * testsuite/gas/i386/avx10_2-512-miscs.d: Ditto. * testsuite/gas/i386/avx10_2-512-miscs.s: Ditto. * testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-256-miscs.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-256-miscs.s: Ditto. * testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-512-miscs.d: Ditto. * testsuite/gas/i386/x86-64-avx10_2-512-miscs.s: Ditto. opcodes/ChangeLog: * i386-dis-evex-len.h: Add EVEX_LEN_0F7E_P_1_W_1, EVEX_LEN_0FD6_P_2_W_0, EVEX_LEN_MAP5_6E and EVEX_LEN_MAP5_7E. * i386-dis-evex-prefix.h: Add PREFIX_EVEX_0F2E, PREFIX_EVEX_0F2F, PREFIX_EVEX_0F3A52, PREFIX_EVEX_0F3A53, PREFIX_EVEX_MAP5_2E, PREFIX_EVEX_MAP5_2F, PREFIX_EVEX_MAP5_6E and PREFIX_EVEX_MAP5_7E. * i386-dis-evex-w.h: Adjust EVEX_W_0F3A42, EVEX_W_0F7E_P_1 and EVEX_W_0FD6. Add EVEX_W_MAP5_6E_P_1 and EVEX_W_MAP5_7E_P_1. * i386-dis-evex.h: Add and adjust table entries for AVX10.2. * i386-dis.c (PREFIX_EVEX_0F2E): New. (PREFIX_EVEX_0F2F): Ditto. (PREFIX_EVEX_0F3A52): Ditto. (PREFIX_EVEX_0F3A53): Ditto. (PREFIX_EVEX_MAP5_2E): Ditto. (PREFIX_EVEX_MAP5_2F): Ditto. (PREFIX_EVEX_MAP5_6E_L_0): Ditto. (PREFIX_EVEX_MAP5_7E_L_0): Ditto. (EVEX_LEN_0F7E_P_1_W_1): Ditto. (EVEX_LEN_0FD6_P_2_W_0): Ditto. (EVEX_LEN_MAP5_6E): Ditto. (EVEX_LEN_MAP5_7E): Ditto. (EVEX_W_MAP5_6E_P_1): Ditto. (EVEX_W_MAP5_7E_P_1): Ditto. * i386-opc.tbl: Add AVX10.2 instructions. * i386-mnem.h: Regenerated. * i386-tbl.h: Ditto. Co-authored-by: Jun Zhang Co-authored-by: Haochen Jiang --- gas/NEWS | 2 + .../gas/i386/avx10_2-256-miscs-intel.d | 112 + gas/testsuite/gas/i386/avx10_2-256-miscs.d | 110 + gas/testsuite/gas/i386/avx10_2-256-miscs.s | 135 + .../gas/i386/avx10_2-512-miscs-intel.d | 34 + gas/testsuite/gas/i386/avx10_2-512-miscs.d | 32 + gas/testsuite/gas/i386/avx10_2-512-miscs.s | 43 + gas/testsuite/gas/i386/i386.exp | 4 + .../gas/i386/x86-64-avx10_2-256-miscs-intel.d | 112 + .../gas/i386/x86-64-avx10_2-256-miscs.d | 110 + .../gas/i386/x86-64-avx10_2-256-miscs.s | 135 + .../gas/i386/x86-64-avx10_2-512-miscs-intel.d | 34 + .../gas/i386/x86-64-avx10_2-512-miscs.d | 32 + .../gas/i386/x86-64-avx10_2-512-miscs.s | 43 + gas/testsuite/gas/i386/x86-64.exp | 4 + opcodes/i386-dis-evex-len.h | 20 + opcodes/i386-dis-evex-prefix.h | 46 +- opcodes/i386-dis-evex-w.h | 12 +- opcodes/i386-dis-evex.h | 12 +- opcodes/i386-dis.c | 25 +- opcodes/i386-mnem.h | 4137 +++++++++-------- opcodes/i386-opc.tbl | 11 + opcodes/i386-tbl.h | 554 ++- 23 files changed, 3504 insertions(+), 2255 deletions(-) create mode 100644 gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/avx10_2-256-miscs.d create mode 100644 gas/testsuite/gas/i386/avx10_2-256-miscs.s create mode 100644 gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/avx10_2-512-miscs.d create mode 100644 gas/testsuite/gas/i386/avx10_2-512-miscs.s create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d create mode 100644 gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s diff --git a/gas/NEWS b/gas/NEWS index 269b63e2056..086ba0477d3 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -1,5 +1,7 @@ -*- text -*- +* Add support for the x86 Intel AVX10.2 instructions. + * Support for Nios II targets has been dropped, as the architecture has been EOL'ed by Intel. diff --git a/gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d b/gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d new file mode 100644 index 00000000000..6f2215bfe5f --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-256-miscs-intel.d @@ -0,0 +1,112 @@ +#objdump: -dw -Mintel +#name: i386 AVX10.2/256 minmax, vector copy and compare insns (Intel disassembly) +#source: avx10_2-256-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 f3 57 08 52 f4 7b\s+vminmaxpbf16 xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 57 28 52 f4 7b\s+vminmaxpbf16 ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 57 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16 ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 28 52 71 7f 7b\s+vminmaxpbf16 ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16 xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 08 52 71 7f 7b\s+vminmaxpbf16 xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 52 f4 7b\s+vminmaxpd xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d5 28 52 f4 7b\s+vminmaxpd ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d5 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 28 52 71 7f 7b\s+vminmaxpd ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 52 71 7f 7b\s+vminmaxpd xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 52 f4 7b\s+vminmaxph xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 54 28 52 f4 7b\s+vminmaxph ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 54 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxph ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 28 52 71 7f 7b\s+vminmaxph ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxph xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 52 71 7f 7b\s+vminmaxph xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 52 f4 7b\s+vminmaxps xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 55 28 52 f4 7b\s+vminmaxps ymm6,ymm5,ymm4,0x7b +\s*[a-f0-9]+:\s*62 f3 55 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxps ymm6\{k7\},ymm5,YMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 28 52 71 7f 7b\s+vminmaxps ymm6,ymm5,YMMWORD PTR \[ecx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxps xmm6\{k7\},xmm5,XMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 52 71 7f 7b\s+vminmaxps xmm6,xmm5,XMMWORD PTR \[ecx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 38 52 31 7b\s+vminmaxpbf16 ymm6,ymm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 bf 52 72 80 7b\s+vminmaxpbf16 ymm6\{k7\}\{z\},ymm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 18 52 31 7b\s+vminmaxpbf16 xmm6,xmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 9f 52 72 80 7b\s+vminmaxpbf16 xmm6\{k7\}\{z\},xmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 d1 18 52 f4 7b\s+vminmaxpd ymm6,ymm5,ymm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 d5 38 52 31 7b\s+vminmaxpd ymm6,ymm5,QWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 bf 52 72 80 7b\s+vminmaxpd ymm6\{k7\}\{z\},ymm5,QWORD BCST \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 18 52 31 7b\s+vminmaxpd xmm6,xmm5,QWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 9f 52 72 80 7b\s+vminmaxpd xmm6\{k7\}\{z\},xmm5,QWORD BCST \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 50 18 52 f4 7b\s+vminmaxph ymm6,ymm5,ymm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 54 38 52 31 7b\s+vminmaxph ymm6,ymm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 bf 52 72 80 7b\s+vminmaxph ymm6\{k7\}\{z\},ymm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 18 52 31 7b\s+vminmaxph xmm6,xmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 9f 52 72 80 7b\s+vminmaxph xmm6\{k7\}\{z\},xmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 51 18 52 f4 7b\s+vminmaxps ymm6,ymm5,ymm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 55 38 52 31 7b\s+vminmaxps ymm6,ymm5,DWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 bf 52 72 80 7b\s+vminmaxps ymm6\{k7\}\{z\},ymm5,DWORD BCST \[edx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 18 52 31 7b\s+vminmaxps xmm6,xmm5,DWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 9f 52 72 80 7b\s+vminmaxps xmm6\{k7\}\{z\},xmm5,DWORD BCST \[edx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 53 f4 7b\s+vminmaxsd xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d5 18 53 f4 7b\s+vminmaxsd xmm6,xmm5,xmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 d5 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsd xmm6\{k7\},xmm5,QWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 53 31 7b\s+vminmaxsd xmm6,xmm5,QWORD PTR \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 53 f4 7b\s+vminmaxsh xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 54 18 53 f4 7b\s+vminmaxsh xmm6,xmm5,xmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 54 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsh xmm6\{k7\},xmm5,WORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 53 31 7b\s+vminmaxsh xmm6,xmm5,WORD PTR \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 53 f4 7b\s+vminmaxss xmm6,xmm5,xmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 55 18 53 f4 7b\s+vminmaxss xmm6,xmm5,xmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 55 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxss xmm6\{k7\},xmm5,DWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 53 31 7b\s+vminmaxss xmm6,xmm5,DWORD PTR \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 08 53 71 7f 7b\s+vminmaxsd xmm6,xmm5,QWORD PTR \[ecx\+0x3f8\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 8f 53 72 80 7b\s+vminmaxsd xmm6\{k7\}\{z\},xmm5,QWORD PTR \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 08 53 71 7f 7b\s+vminmaxsh xmm6,xmm5,WORD PTR \[ecx\+0xfe\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 8f 53 72 80 7b\s+vminmaxsh xmm6\{k7\}\{z\},xmm5,WORD PTR \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 08 53 71 7f 7b\s+vminmaxss xmm6,xmm5,DWORD PTR \[ecx\+0x1fc\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 8f 53 72 80 7b\s+vminmaxss xmm6\{k7\}\{z\},xmm5,DWORD PTR \[edx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 f1 7e 08 7e f5\s+vmovd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 7d 08 d6 ee\s+vmovd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 08 6e f5\s+vmovw xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 08 7e ee\s+vmovw xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f f5\s+vcomxsd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 ff 18 2f f5\s+vcomxsd xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 ff 08 2f b4 f4 00 00 00 10\s+vcomxsd xmm6,QWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 31\s+vcomxsd xmm6,QWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f f5\s+vcomxsh xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 18 2f f5\s+vcomxsh xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f5 7e 08 2f b4 f4 00 00 00 10\s+vcomxsh xmm6,WORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 31\s+vcomxsh xmm6,WORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f f5\s+vcomxss xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 7e 18 2f f5\s+vcomxss xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 7e 08 2f b4 f4 00 00 00 10\s+vcomxss xmm6,DWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 31\s+vcomxss xmm6,DWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 71 7f\s+vcomxsd xmm6,QWORD PTR \[ecx\+0x3f8\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 72 80\s+vcomxsd xmm6,QWORD PTR \[edx-0x400\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 71 7f\s+vcomxsh xmm6,WORD PTR \[ecx\+0xfe\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 72 80\s+vcomxsh xmm6,WORD PTR \[edx-0x100\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 71 7f\s+vcomxss xmm6,DWORD PTR \[ecx\+0x1fc\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 72 80\s+vcomxss xmm6,DWORD PTR \[edx-0x200\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e f5\s+vucomxsd xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 ff 18 2e f5\s+vucomxsd xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 ff 08 2e b4 f4 00 00 00 10\s+vucomxsd xmm6,QWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 31\s+vucomxsd xmm6,QWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e f5\s+vucomxsh xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f5 7e 18 2e f5\s+vucomxsh xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f5 7e 08 2e b4 f4 00 00 00 10\s+vucomxsh xmm6,WORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 31\s+vucomxsh xmm6,WORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e f5\s+vucomxss xmm6,xmm5 +\s*[a-f0-9]+:\s*62 f1 7e 18 2e f5\s+vucomxss xmm6,xmm5\{sae\} +\s*[a-f0-9]+:\s*62 f1 7e 08 2e b4 f4 00 00 00 10\s+vucomxss xmm6,DWORD PTR \[esp\+esi\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 31\s+vucomxss xmm6,DWORD PTR \[ecx\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 71 7f\s+vucomxsd xmm6,QWORD PTR \[ecx\+0x3f8\] +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 72 80\s+vucomxsd xmm6,QWORD PTR \[edx-0x400\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 71 7f\s+vucomxsh xmm6,WORD PTR \[ecx\+0xfe\] +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 72 80\s+vucomxsh xmm6,WORD PTR \[edx-0x100\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 71 7f\s+vucomxss xmm6,DWORD PTR \[ecx\+0x1fc\] +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 72 80\s+vucomxss xmm6,DWORD PTR \[edx-0x200\] +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-256-miscs.d b/gas/testsuite/gas/i386/avx10_2-256-miscs.d new file mode 100644 index 00000000000..bb262b171df --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-256-miscs.d @@ -0,0 +1,110 @@ +#objdump: -dw +#name: i386 AVX10.2/256 minmax, vector copy and compare insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 f3 57 08 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 57 28 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 57 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 57 28 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 57 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 57 08 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 08 52 f4 7b\s+vminmaxpd\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 28 52 f4 7b\s+vminmaxpd\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d5 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 28 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d5 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 08 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 08 52 f4 7b\s+vminmaxph\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 28 52 f4 7b\s+vminmaxph\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 54 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 28 52 71 7f 7b\s+vminmaxph\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 54 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 08 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 08 52 f4 7b\s+vminmaxps\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 28 52 f4 7b\s+vminmaxps\s\$0x7b,%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 55 2f 52 b4 f4 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%esp,%esi,8\),%ymm5,%ymm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 28 52 71 7f 7b\s+vminmaxps\s\$0x7b,0xfe0\(%ecx\),%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 55 0f 52 b4 f4 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 08 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x7f0\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 57 38 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%ecx\)\{1to16\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 57 bf 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%edx\)\{1to16\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 57 18 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%ecx\)\{1to8\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 57 9f 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%edx\)\{1to8\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d1 18 52 f4 7b\s+vminmaxpd\s\$0x7b,\{sae\},%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d5 38 52 31 7b\s+vminmaxpd\s\$0x7b,\(%ecx\)\{1to4\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 d5 bf 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%edx\)\{1to4\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d5 18 52 31 7b\s+vminmaxpd\s\$0x7b,\(%ecx\)\{1to2\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 9f 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%edx\)\{1to2\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 50 18 52 f4 7b\s+vminmaxph\s\$0x7b,\{sae\},%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 54 38 52 31 7b\s+vminmaxph\s\$0x7b,\(%ecx\)\{1to16\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 54 bf 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%edx\)\{1to16\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 54 18 52 31 7b\s+vminmaxph\s\$0x7b,\(%ecx\)\{1to8\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 9f 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%edx\)\{1to8\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 51 18 52 f4 7b\s+vminmaxps\s\$0x7b,\{sae\},%ymm4,%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 55 38 52 31 7b\s+vminmaxps\s\$0x7b,\(%ecx\)\{1to8\},%ymm5,%ymm6 +\s*[a-f0-9]+:\s*62 f3 55 bf 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%edx\)\{1to8\},%ymm5,%ymm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 55 18 52 31 7b\s+vminmaxps\s\$0x7b,\(%ecx\)\{1to4\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 9f 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%edx\)\{1to4\},%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d5 08 53 f4 7b\s+vminmaxsd\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 18 53 f4 7b\s+vminmaxsd\s\$0x7b,\{sae\},%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsd\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 08 53 31 7b\s+vminmaxsd\s\$0x7b,\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 08 53 f4 7b\s+vminmaxsh\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 18 53 f4 7b\s+vminmaxsh\s\$0x7b,\{sae\},%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxsh\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 08 53 31 7b\s+vminmaxsh\s\$0x7b,\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 08 53 f4 7b\s+vminmaxss\s\$0x7b,%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 18 53 f4 7b\s+vminmaxss\s\$0x7b,\{sae\},%xmm4,%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 0f 53 b4 f4 00 00 00 10 7b\s+vminmaxss\s\$0x7b,0x10000000\(%esp,%esi,8\),%xmm5,%xmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 08 53 31 7b\s+vminmaxss\s\$0x7b,\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 08 53 71 7f 7b\s+vminmaxsd\s\$0x7b,0x3f8\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 d5 8f 53 72 80 7b\s+vminmaxsd\s\$0x7b,-0x400\(%edx\),%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 54 08 53 71 7f 7b\s+vminmaxsh\s\$0x7b,0xfe\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 54 8f 53 72 80 7b\s+vminmaxsh\s\$0x7b,-0x100\(%edx\),%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 55 08 53 71 7f 7b\s+vminmaxss\s\$0x7b,0x1fc\(%ecx\),%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f3 55 8f 53 72 80 7b\s+vminmaxss\s\$0x7b,-0x200\(%edx\),%xmm5,%xmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f1 7e 08 7e f5\s+vmovd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7d 08 d6 ee\s+vmovd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 6e f5\s+vmovw %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 7e ee\s+vmovw %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f f5\s+vcomxsd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 18 2f f5\s+vcomxsd \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f b4 f4 00 00 00 10\s+vcomxsd 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 31\s+vcomxsd \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f f5\s+vcomxsh %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 18 2f f5\s+vcomxsh \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f b4 f4 00 00 00 10\s+vcomxsh 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 31\s+vcomxsh \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f f5\s+vcomxss %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 18 2f f5\s+vcomxss \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f b4 f4 00 00 00 10\s+vcomxss 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 31\s+vcomxss \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 71 7f\s+vcomxsd 0x3f8\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2f 72 80\s+vcomxsd -0x400\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 71 7f\s+vcomxsh 0xfe\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2f 72 80\s+vcomxsh -0x100\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 71 7f\s+vcomxss 0x1fc\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2f 72 80\s+vcomxss -0x200\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e f5\s+vucomxsd %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 18 2e f5\s+vucomxsd \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e b4 f4 00 00 00 10\s+vucomxsd 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 31\s+vucomxsd \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e f5\s+vucomxsh %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 18 2e f5\s+vucomxsh \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e b4 f4 00 00 00 10\s+vucomxsh 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 31\s+vucomxsh \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e f5\s+vucomxss %xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 18 2e f5\s+vucomxss \{sae\},%xmm5,%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e b4 f4 00 00 00 10\s+vucomxss 0x10000000\(%esp,%esi,8\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 31\s+vucomxss \(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 71 7f\s+vucomxsd 0x3f8\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 ff 08 2e 72 80\s+vucomxsd -0x400\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 71 7f\s+vucomxsh 0xfe\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f5 7e 08 2e 72 80\s+vucomxsh -0x100\(%edx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 71 7f\s+vucomxss 0x1fc\(%ecx\),%xmm6 +\s*[a-f0-9]+:\s*62 f1 7e 08 2e 72 80\s+vucomxss -0x200\(%edx\),%xmm6 +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-256-miscs.s b/gas/testsuite/gas/i386/avx10_2-256-miscs.s new file mode 100644 index 00000000000..023053b7009 --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-256-miscs.s @@ -0,0 +1,135 @@ +# Check 32bit AVX10.2/256 instructions + + .arch generic32 + .arch .avx10.2/256 + .text +_start: + .irp m, bf16, d, h, s + vminmaxp\m $123, %xmm4, %xmm5, %xmm6 + vminmaxp\m $123, %ymm4, %ymm5, %ymm6 + vminmaxp\m $123, 0x10000000(%esp, %esi, 8), %ymm5, %ymm6{%k7} + vminmaxp\m $123, 4064(%ecx), %ymm5, %ymm6 + vminmaxp\m $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxp\m $123, 2032(%ecx), %xmm5, %xmm6 + .endr + + vminmaxpbf16 $123, (%ecx){1to16}, %ymm5, %ymm6 + vminmaxpbf16 $123, -256(%edx){1to16}, %ymm5, %ymm6{%k7}{z} + vminmaxpbf16 $123, (%ecx){1to8}, %xmm5, %xmm6 + vminmaxpbf16 $123, -256(%edx){1to8}, %xmm5, %xmm6{%k7}{z} + vminmaxpd $123, {sae}, %ymm4, %ymm5, %ymm6 + vminmaxpd $123, (%ecx){1to4}, %ymm5, %ymm6 + vminmaxpd $123, -1024(%edx){1to4}, %ymm5, %ymm6{%k7}{z} + vminmaxpd $123, (%ecx){1to2}, %xmm5, %xmm6 + vminmaxpd $123, -1024(%edx){1to2}, %xmm5, %xmm6{%k7}{z} + vminmaxph $123, {sae}, %ymm4, %ymm5, %ymm6 + vminmaxph $123, (%ecx){1to16}, %ymm5, %ymm6 + vminmaxph $123, -256(%edx){1to16}, %ymm5, %ymm6{%k7}{z} + vminmaxph $123, (%ecx){1to8}, %xmm5, %xmm6 + vminmaxph $123, -256(%edx){1to8}, %xmm5, %xmm6{%k7}{z} + vminmaxps $123, {sae}, %ymm4, %ymm5, %ymm6 + vminmaxps $123, (%ecx){1to8}, %ymm5, %ymm6 + vminmaxps $123, -512(%edx){1to8}, %ymm5, %ymm6{%k7}{z} + vminmaxps $123, (%ecx){1to4}, %xmm5, %xmm6 + vminmaxps $123, -512(%edx){1to4}, %xmm5, %xmm6{%k7}{z} + + .irp m, d, h, s + vminmaxs\m $123, %xmm4, %xmm5, %xmm6 + vminmaxs\m $123, {sae}, %xmm4, %xmm5, %xmm6 + vminmaxs\m $123, 0x10000000(%esp, %esi, 8), %xmm5, %xmm6{%k7} + vminmaxs\m $123, (%ecx), %xmm5, %xmm6 + .endr + + vminmaxsd $123, 1016(%ecx), %xmm5, %xmm6 + vminmaxsd $123, -1024(%edx), %xmm5, %xmm6{%k7}{z} + vminmaxsh $123, 254(%ecx), %xmm5, %xmm6 + vminmaxsh $123, -256(%edx), %xmm5, %xmm6{%k7}{z} + vminmaxss $123, 508(%ecx), %xmm5, %xmm6 + vminmaxss $123, -512(%edx), %xmm5, %xmm6{%k7}{z} + + vmovd %xmm5, %xmm6 + vmovd.s %xmm5, %xmm6 + vmovw %xmm5, %xmm6 + vmovw.s %xmm5, %xmm6 + + .irp u, "", u + .irp m, d, h, s + v\u\()comxs\m %xmm5, %xmm6 + v\u\()comxs\m {sae}, %xmm5, %xmm6 + v\u\()comxs\m 0x10000000(%esp, %esi, 8), %xmm6 + v\u\()comxs\m (%ecx), %xmm6 + .endr + + v\u\()comxsd 1016(%ecx), %xmm6 + v\u\()comxsd -1024(%edx), %xmm6 + v\u\()comxsh 254(%ecx), %xmm6 + v\u\()comxsh -256(%edx), %xmm6 + v\u\()comxss 508(%ecx), %xmm6 + v\u\()comxss -512(%edx), %xmm6 + .endr + +_intel: + .intel_syntax noprefix + .irp m, bf16, d, h, s + vminmaxp\m xmm6, xmm5, xmm4, 123 + vminmaxp\m ymm6, ymm5, ymm4, 123 + vminmaxp\m ymm6{k7}, ymm5, [esp+esi*8+0x10000000], 123 + vminmaxp\m ymm6, ymm5, YMMWORD PTR [ecx+4064], 123 + vminmaxp\m xmm6{k7}, xmm5, [esp+esi*8+0x10000000], 123 + vminmaxp\m xmm6, xmm5, XMMWORD PTR [ecx+2032], 123 + .endr + + vminmaxpbf16 ymm6, ymm5, [ecx]{1to16}, 123 + vminmaxpbf16 ymm6{k7}{z}, ymm5, WORD PTR [edx-256]{1to16}, 123 + vminmaxpbf16 xmm6, xmm5, [ecx]{1to8}, 123 + vminmaxpbf16 xmm6{k7}{z}, xmm5, WORD PTR [edx-256]{1to8}, 123 + vminmaxpd ymm6, ymm5, ymm4, {sae}, 123 + vminmaxpd ymm6, ymm5, QWORD PTR [ecx]{1to4}, 123 + vminmaxpd ymm6{k7}{z}, ymm5, [edx-1024]{1to4}, 123 + vminmaxpd xmm6, xmm5, QWORD PTR [ecx]{1to2}, 123 + vminmaxpd xmm6{k7}{z}, xmm5, [edx-1024]{1to2}, 123 + vminmaxph ymm6, ymm5, ymm4, {sae}, 123 + vminmaxph ymm6, ymm5, [ecx]{1to16}, 123 + vminmaxph ymm6{k7}{z}, ymm5, WORD PTR [edx-256]{1to16}, 123 + vminmaxph xmm6, xmm5, WORD PTR [ecx]{1to8}, 123 + vminmaxph xmm6{k7}{z}, xmm5, [edx-256]{1to8}, 123 + vminmaxps ymm6, ymm5, ymm4, {sae}, 123 + vminmaxps ymm6, ymm5, DWORD PTR [ecx]{1to8}, 123 + vminmaxps ymm6{k7}{z}, ymm5, [edx-512]{1to8}, 123 + vminmaxps xmm6, xmm5, [ecx]{1to4}, 123 + vminmaxps xmm6{k7}{z}, xmm5, DWORD PTR [edx-512]{1to4}, 123 + + .irp m, d, h, s + vminmaxs\m xmm6, xmm5, xmm4, 123 + vminmaxs\m xmm6, xmm5, xmm4, {sae}, 123 + vminmaxs\m xmm6{k7}, xmm5, [esp+esi*8+0x10000000], 123 + vminmaxs\m xmm6, xmm5, [ecx], 123 + .endr + + vminmaxsd xmm6, xmm5, [ecx+1016], 123 + vminmaxsd xmm6{k7}{z}, xmm5, QWORD PTR [edx-1024], 123 + vminmaxsh xmm6, xmm5, [ecx+254], 123 + vminmaxsh xmm6{k7}{z}, xmm5, WORD PTR [edx-256], 123 + vminmaxss xmm6, xmm5, DWORD PTR [ecx+508], 123 + vminmaxss xmm6{k7}{z}, xmm5, [edx-512], 123 + + vmovd xmm6, xmm5 + vmovd.s xmm6, xmm5 + vmovw xmm6, xmm5 + vmovw.s xmm6, xmm5 + + .irp u, "", u + .irp m, d, h, s + v\u\()comxs\m xmm6, xmm5 + v\u\()comxs\m xmm6, xmm5, {sae} + v\u\()comxs\m xmm6, [esp+esi*8+0x10000000] + v\u\()comxs\m xmm6, [ecx] + .endr + + v\u\()comxsd xmm6, [ecx+1016] + v\u\()comxsd xmm6, QWORD PTR [edx-1024] + v\u\()comxsh xmm6, [ecx+254] + v\u\()comxsh xmm6, WORD PTR [edx-256] + v\u\()comxss xmm6, DWORD PTR [ecx+508] + v\u\()comxss xmm6, [edx-512] + .endr diff --git a/gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d b/gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d new file mode 100644 index 00000000000..862a397d24c --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-512-miscs-intel.d @@ -0,0 +1,34 @@ +#objdump: -dw -Mintel +#name: i386 AVX10.2/512 minmax insns (Intel disassembly) +#source: avx10_2-512-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 f3 57 48 52 f4 7b\s+vminmaxpbf16 zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 57 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16 zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 48 52 71 7f 7b\s+vminmaxpbf16 zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 48 52 f4 7b\s+vminmaxpd zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 d5 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 48 52 71 7f 7b\s+vminmaxpd zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 48 52 f4 7b\s+vminmaxph zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 54 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxph zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 48 52 71 7f 7b\s+vminmaxph zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 48 52 f4 7b\s+vminmaxps zmm6,zmm5,zmm4,0x7b +\s*[a-f0-9]+:\s*62 f3 55 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxps zmm6\{k7\},zmm5,ZMMWORD PTR \[esp\+esi\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 48 52 71 7f 7b\s+vminmaxps zmm6,zmm5,ZMMWORD PTR \[ecx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 58 52 31 7b\s+vminmaxpbf16 zmm6,zmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 57 df 52 72 80 7b\s+vminmaxpbf16 zmm6\{k7\}\{z\},zmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 18 52 f4 7b\s+vminmaxpd zmm6,zmm5,zmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 d5 58 52 31 7b\s+vminmaxpd zmm6,zmm5,QWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 d5 df 52 72 80 7b\s+vminmaxpd zmm6\{k7\}\{z\},zmm5,QWORD BCST \[edx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 18 52 f4 7b\s+vminmaxph zmm6,zmm5,zmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 54 58 52 31 7b\s+vminmaxph zmm6,zmm5,WORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 54 df 52 72 80 7b\s+vminmaxph zmm6\{k7\}\{z\},zmm5,WORD BCST \[edx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 18 52 f4 7b\s+vminmaxps zmm6,zmm5,zmm4\{sae\},0x7b +\s*[a-f0-9]+:\s*62 f3 55 58 52 31 7b\s+vminmaxps zmm6,zmm5,DWORD BCST \[ecx\],0x7b +\s*[a-f0-9]+:\s*62 f3 55 df 52 72 80 7b\s+vminmaxps zmm6\{k7\}\{z\},zmm5,DWORD BCST \[edx-0x200\],0x7b +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-512-miscs.d b/gas/testsuite/gas/i386/avx10_2-512-miscs.d new file mode 100644 index 00000000000..4eb49ca2e09 --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-512-miscs.d @@ -0,0 +1,32 @@ +#objdump: -dw +#name: i386 AVX10.2/512 minmax insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 f3 57 48 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 57 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 57 48 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 48 52 f4 7b\s+vminmaxpd\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 d5 48 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 48 52 f4 7b\s+vminmaxph\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 54 48 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 48 52 f4 7b\s+vminmaxps\s\$0x7b,%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 4f 52 b4 f4 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%esp,%esi,8\),%zmm5,%zmm6\{%k7\} +\s*[a-f0-9]+:\s*62 f3 55 48 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x1fc0\(%ecx\),%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 57 58 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%ecx\)\{1to32\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 57 df 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%edx\)\{1to32\},%zmm5,%zmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 d5 18 52 f4 7b\s+vminmaxpd\s\$0x7b,\{sae\},%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 58 52 31 7b\s+vminmaxpd\s\$0x7b,\(%ecx\)\{1to8\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 d5 df 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%edx\)\{1to8\},%zmm5,%zmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 54 18 52 f4 7b\s+vminmaxph\s\$0x7b,\{sae\},%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 58 52 31 7b\s+vminmaxph\s\$0x7b,\(%ecx\)\{1to32\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 54 df 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%edx\)\{1to32\},%zmm5,%zmm6\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 f3 55 18 52 f4 7b\s+vminmaxps\s\$0x7b,\{sae\},%zmm4,%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 58 52 31 7b\s+vminmaxps\s\$0x7b,\(%ecx\)\{1to16\},%zmm5,%zmm6 +\s*[a-f0-9]+:\s*62 f3 55 df 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%edx\)\{1to16\},%zmm5,%zmm6\{%k7\}\{z\} +#pass diff --git a/gas/testsuite/gas/i386/avx10_2-512-miscs.s b/gas/testsuite/gas/i386/avx10_2-512-miscs.s new file mode 100644 index 00000000000..30db693f82a --- /dev/null +++ b/gas/testsuite/gas/i386/avx10_2-512-miscs.s @@ -0,0 +1,43 @@ +# Check 32bit AVX10.2/512 instructions + + .arch generic32 + .arch .avx10.2/512 + .text +_start: + .irp m, bf16, d, h, s + vminmaxp\m $123, %zmm4, %zmm5, %zmm6 + vminmaxp\m $123, 0x10000000(%esp, %esi, 8), %zmm5, %zmm6{%k7} + vminmaxp\m $123, 8128(%ecx), %zmm5, %zmm6 + .endr + + vminmaxpbf16 $123, (%ecx){1to32}, %zmm5, %zmm6 + vminmaxpbf16 $123, -256(%edx){1to32}, %zmm5, %zmm6{%k7}{z} + vminmaxpd $123, {sae}, %zmm4, %zmm5, %zmm6 + vminmaxpd $123, (%ecx){1to8}, %zmm5, %zmm6 + vminmaxpd $123, -1024(%edx){1to8}, %zmm5, %zmm6{%k7}{z} + vminmaxph $123, {sae}, %zmm4, %zmm5, %zmm6 + vminmaxph $123, (%ecx){1to32}, %zmm5, %zmm6 + vminmaxph $123, -256(%edx){1to32}, %zmm5, %zmm6{%k7}{z} + vminmaxps $123, {sae}, %zmm4, %zmm5, %zmm6 + vminmaxps $123, (%ecx){1to16}, %zmm5, %zmm6 + vminmaxps $123, -512(%edx){1to16}, %zmm5, %zmm6{%k7}{z} + +_intel: + .intel_syntax noprefix + .irp m, bf16, d, h, s + vminmaxp\m zmm6, zmm5, zmm4, 123 + vminmaxp\m zmm6{k7}, zmm5, [esp+esi*8+0x10000000], 123 + vminmaxp\m zmm6, zmm5, ZMMWORD PTR [ecx+8128], 123 + .endr + + vminmaxpbf16 zmm6, zmm5, [ecx]{1to32}, 123 + vminmaxpbf16 zmm6{k7}{z}, zmm5, WORD PTR [edx-256]{1to32}, 123 + vminmaxpd zmm6, zmm5, zmm4, {sae}, 123 + vminmaxpd zmm6, zmm5, QWORD PTR [ecx]{1to8}, 123 + vminmaxpd zmm6{k7}{z}, zmm5, [edx-1024]{1to8}, 123 + vminmaxph zmm6, zmm5, zmm4, {sae}, 123 + vminmaxph zmm6, zmm5, WORD PTR [ecx]{1to32}, 123 + vminmaxph zmm6{k7}{z}, zmm5, [edx-256]{1to32}, 123 + vminmaxps zmm6, zmm5, zmm4, {sae}, 123 + vminmaxps zmm6, zmm5, [ecx]{1to16}, 123 + vminmaxps zmm6{k7}{z}, zmm5, DWORD PTR [edx-512]{1to16}, 123 diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp index 17458ce2c9a..bb1092b0c08 100644 --- a/gas/testsuite/gas/i386/i386.exp +++ b/gas/testsuite/gas/i386/i386.exp @@ -532,6 +532,10 @@ if [gas_32_check] then { run_dump_test "avx10_2-512-satcvt-intel" run_dump_test "avx10_2-256-satcvt" run_dump_test "avx10_2-256-satcvt-intel" + run_dump_test "avx10_2-512-miscs" + run_dump_test "avx10_2-512-miscs-intel" + run_dump_test "avx10_2-256-miscs" + run_dump_test "avx10_2-256-miscs-intel" run_list_test "sg" run_dump_test "clzero" run_dump_test "invlpgb" diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d new file mode 100644 index 00000000000..f16a08b7db9 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs-intel.d @@ -0,0 +1,112 @@ +#objdump: -dw -Mintel +#name: x86_64 AVX10.2/256 minmax, vector copy and compare insns (Intel disassembly) +#source: x86-64-avx10_2-256-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 03 17 00 52 f4 7b\s+vminmaxpbf16 xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 17 20 52 f4 7b\s+vminmaxpbf16 ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 17 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16 ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 17 20 52 71 7f 7b\s+vminmaxpbf16 ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 23 17 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16 xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 17 00 52 71 7f 7b\s+vminmaxpbf16 xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 03 95 00 52 f4 7b\s+vminmaxpd xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 95 20 52 f4 7b\s+vminmaxpd ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 95 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpd ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 95 20 52 71 7f 7b\s+vminmaxpd ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 23 95 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpd xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 95 00 52 71 7f 7b\s+vminmaxpd xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 03 14 00 52 f4 7b\s+vminmaxph xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 14 20 52 f4 7b\s+vminmaxph ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 14 27 52 b4 f5 00 00 00 10 7b\s+vminmaxph ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 14 20 52 71 7f 7b\s+vminmaxph ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 23 14 07 52 b4 f5 00 00 00 10 7b\s+vminmaxph xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 14 00 52 71 7f 7b\s+vminmaxph xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 03 15 00 52 f4 7b\s+vminmaxps xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 15 20 52 f4 7b\s+vminmaxps ymm30,ymm29,ymm28,0x7b +\s*[a-f0-9]+:\s*62 23 15 27 52 b4 f5 00 00 00 10 7b\s+vminmaxps ymm30\{k7\},ymm29,YMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 15 20 52 71 7f 7b\s+vminmaxps ymm30,ymm29,YMMWORD PTR \[rcx\+0xfe0\],0x7b +\s*[a-f0-9]+:\s*62 23 15 07 52 b4 f5 00 00 00 10 7b\s+vminmaxps xmm30\{k7\},xmm29,XMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 15 00 52 71 7f 7b\s+vminmaxps xmm30,xmm29,XMMWORD PTR \[rcx\+0x7f0\],0x7b +\s*[a-f0-9]+:\s*62 43 17 30 52 31 7b\s+vminmaxpbf16 ymm30,ymm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 17 b7 52 72 80 7b\s+vminmaxpbf16 ymm30\{k7\}\{z\},ymm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 43 17 10 52 31 7b\s+vminmaxpbf16 xmm30,xmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 17 97 52 72 80 7b\s+vminmaxpbf16 xmm30\{k7\}\{z\},xmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 91 10 52 f4 7b\s+vminmaxpd ymm30,ymm29,ymm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 43 95 30 52 31 7b\s+vminmaxpd ymm30,ymm29,QWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 b7 52 72 80 7b\s+vminmaxpd ymm30\{k7\}\{z\},ymm29,QWORD BCST \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 43 95 10 52 31 7b\s+vminmaxpd xmm30,xmm29,QWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 97 52 72 80 7b\s+vminmaxpd xmm30\{k7\}\{z\},xmm29,QWORD BCST \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 03 10 10 52 f4 7b\s+vminmaxph ymm30,ymm29,ymm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 43 14 30 52 31 7b\s+vminmaxph ymm30,ymm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 14 b7 52 72 80 7b\s+vminmaxph ymm30\{k7\}\{z\},ymm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 43 14 10 52 31 7b\s+vminmaxph xmm30,xmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 14 97 52 72 80 7b\s+vminmaxph xmm30\{k7\}\{z\},xmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 11 10 52 f4 7b\s+vminmaxps ymm30,ymm29,ymm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 43 15 30 52 31 7b\s+vminmaxps ymm30,ymm29,DWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 15 b7 52 72 80 7b\s+vminmaxps ymm30\{k7\}\{z\},ymm29,DWORD BCST \[rdx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 43 15 10 52 31 7b\s+vminmaxps xmm30,xmm29,DWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 15 97 52 72 80 7b\s+vminmaxps xmm30\{k7\}\{z\},xmm29,DWORD BCST \[rdx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 03 95 00 53 f4 7b\s+vminmaxsd xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 95 10 53 f4 7b\s+vminmaxsd xmm30,xmm29,xmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 95 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsd xmm30\{k7\},xmm29,QWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 95 00 53 31 7b\s+vminmaxsd xmm30,xmm29,QWORD PTR \[r9\],0x7b +\s*[a-f0-9]+:\s*62 03 14 00 53 f4 7b\s+vminmaxsh xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 14 10 53 f4 7b\s+vminmaxsh xmm30,xmm29,xmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 14 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsh xmm30\{k7\},xmm29,WORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 14 00 53 31 7b\s+vminmaxsh xmm30,xmm29,WORD PTR \[r9\],0x7b +\s*[a-f0-9]+:\s*62 03 15 00 53 f4 7b\s+vminmaxss xmm30,xmm29,xmm28,0x7b +\s*[a-f0-9]+:\s*62 03 15 10 53 f4 7b\s+vminmaxss xmm30,xmm29,xmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 23 15 07 53 b4 f5 00 00 00 10 7b\s+vminmaxss xmm30\{k7\},xmm29,DWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 43 15 00 53 31 7b\s+vminmaxss xmm30,xmm29,DWORD PTR \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 00 53 71 7f 7b\s+vminmaxsd xmm30,xmm29,QWORD PTR \[rcx\+0x3f8\],0x7b +\s*[a-f0-9]+:\s*62 63 95 87 53 72 80 7b\s+vminmaxsd xmm30\{k7\}\{z\},xmm29,QWORD PTR \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 63 14 00 53 71 7f 7b\s+vminmaxsh xmm30,xmm29,WORD PTR \[rcx\+0xfe\],0x7b +\s*[a-f0-9]+:\s*62 63 14 87 53 72 80 7b\s+vminmaxsh xmm30\{k7\}\{z\},xmm29,WORD PTR \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 63 15 00 53 71 7f 7b\s+vminmaxss xmm30,xmm29,DWORD PTR \[rcx\+0x1fc\],0x7b +\s*[a-f0-9]+:\s*62 63 15 87 53 72 80 7b\s+vminmaxss xmm30\{k7\}\{z\},xmm29,DWORD PTR \[rdx-0x200\],0x7b +\s*[a-f0-9]+:\s*62 01 7e 08 7e f5\s+vmovd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 7d 08 d6 ee\s+vmovd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 08 6e f5\s+vmovw xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 08 7e ee\s+vmovw xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 ff 08 2f f5\s+vcomxsd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 ff 18 2f f5\s+vcomxsd xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 ff 08 2f b4 f5 00 00 00 10\s+vcomxsd xmm30,QWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 ff 08 2f 31\s+vcomxsd xmm30,QWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 05 7e 08 2f f5\s+vcomxsh xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 18 2f f5\s+vcomxsh xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 25 7e 08 2f b4 f5 00 00 00 10\s+vcomxsh xmm30,WORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 45 7e 08 2f 31\s+vcomxsh xmm30,WORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 01 7e 08 2f f5\s+vcomxss xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 7e 18 2f f5\s+vcomxss xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 7e 08 2f b4 f5 00 00 00 10\s+vcomxss xmm30,DWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 7e 08 2f 31\s+vcomxss xmm30,DWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 61 ff 08 2f 71 7f\s+vcomxsd xmm30,QWORD PTR \[rcx\+0x3f8\] +\s*[a-f0-9]+:\s*62 61 ff 08 2f 72 80\s+vcomxsd xmm30,QWORD PTR \[rdx-0x400\] +\s*[a-f0-9]+:\s*62 65 7e 08 2f 71 7f\s+vcomxsh xmm30,WORD PTR \[rcx\+0xfe\] +\s*[a-f0-9]+:\s*62 65 7e 08 2f 72 80\s+vcomxsh xmm30,WORD PTR \[rdx-0x100\] +\s*[a-f0-9]+:\s*62 61 7e 08 2f 71 7f\s+vcomxss xmm30,DWORD PTR \[rcx\+0x1fc\] +\s*[a-f0-9]+:\s*62 61 7e 08 2f 72 80\s+vcomxss xmm30,DWORD PTR \[rdx-0x200\] +\s*[a-f0-9]+:\s*62 01 ff 08 2e f5\s+vucomxsd xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 ff 18 2e f5\s+vucomxsd xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 ff 08 2e b4 f5 00 00 00 10\s+vucomxsd xmm30,QWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 ff 08 2e 31\s+vucomxsd xmm30,QWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 05 7e 08 2e f5\s+vucomxsh xmm30,xmm29 +\s*[a-f0-9]+:\s*62 05 7e 18 2e f5\s+vucomxsh xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 25 7e 08 2e b4 f5 00 00 00 10\s+vucomxsh xmm30,WORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 45 7e 08 2e 31\s+vucomxsh xmm30,WORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 01 7e 08 2e f5\s+vucomxss xmm30,xmm29 +\s*[a-f0-9]+:\s*62 01 7e 18 2e f5\s+vucomxss xmm30,xmm29\{sae\} +\s*[a-f0-9]+:\s*62 21 7e 08 2e b4 f5 00 00 00 10\s+vucomxss xmm30,DWORD PTR \[rbp\+r14\*8\+0x10000000\] +\s*[a-f0-9]+:\s*62 41 7e 08 2e 31\s+vucomxss xmm30,DWORD PTR \[r9\] +\s*[a-f0-9]+:\s*62 61 ff 08 2e 71 7f\s+vucomxsd xmm30,QWORD PTR \[rcx\+0x3f8\] +\s*[a-f0-9]+:\s*62 61 ff 08 2e 72 80\s+vucomxsd xmm30,QWORD PTR \[rdx-0x400\] +\s*[a-f0-9]+:\s*62 65 7e 08 2e 71 7f\s+vucomxsh xmm30,WORD PTR \[rcx\+0xfe\] +\s*[a-f0-9]+:\s*62 65 7e 08 2e 72 80\s+vucomxsh xmm30,WORD PTR \[rdx-0x100\] +\s*[a-f0-9]+:\s*62 61 7e 08 2e 71 7f\s+vucomxss xmm30,DWORD PTR \[rcx\+0x1fc\] +\s*[a-f0-9]+:\s*62 61 7e 08 2e 72 80\s+vucomxss xmm30,DWORD PTR \[rdx-0x200\] +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d new file mode 100644 index 00000000000..12ef7fba076 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.d @@ -0,0 +1,110 @@ +#objdump: -dw +#name: x86_64 AVX10.2/256 minmax, vector copy and compare insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 03 17 00 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 17 20 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 17 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 17 20 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 17 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 17 00 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 95 00 52 f4 7b\s+vminmaxpd\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 95 20 52 f4 7b\s+vminmaxpd\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 95 27 52 b4 f5 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 95 20 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 95 07 52 b4 f5 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 95 00 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 14 00 52 f4 7b\s+vminmaxph\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 14 20 52 f4 7b\s+vminmaxph\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 14 27 52 b4 f5 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 14 20 52 71 7f 7b\s+vminmaxph\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 14 07 52 b4 f5 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 14 00 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 15 00 52 f4 7b\s+vminmaxps\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 15 20 52 f4 7b\s+vminmaxps\s\$0x7b,%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 15 27 52 b4 f5 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%rbp,%r14,8\),%ymm29,%ymm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 15 20 52 71 7f 7b\s+vminmaxps\s\$0x7b,0xfe0\(%rcx\),%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 23 15 07 52 b4 f5 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 15 00 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x7f0\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 43 17 30 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%r9\)\{1to16\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 17 b7 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%rdx\)\{1to16\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 43 17 10 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%r9\)\{1to8\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 17 97 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%rdx\)\{1to8\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 91 10 52 f4 7b\s+vminmaxpd\s\$0x7b,\{sae\},%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 43 95 30 52 31 7b\s+vminmaxpd\s\$0x7b,\(%r9\)\{1to4\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 95 b7 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%rdx\)\{1to4\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 43 95 10 52 31 7b\s+vminmaxpd\s\$0x7b,\(%r9\)\{1to2\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 95 97 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%rdx\)\{1to2\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 10 10 52 f4 7b\s+vminmaxph\s\$0x7b,\{sae\},%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 43 14 30 52 31 7b\s+vminmaxph\s\$0x7b,\(%r9\)\{1to16\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 14 b7 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%rdx\)\{1to16\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 43 14 10 52 31 7b\s+vminmaxph\s\$0x7b,\(%r9\)\{1to8\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 14 97 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%rdx\)\{1to8\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 11 10 52 f4 7b\s+vminmaxps\s\$0x7b,\{sae\},%ymm28,%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 43 15 30 52 31 7b\s+vminmaxps\s\$0x7b,\(%r9\)\{1to8\},%ymm29,%ymm30 +\s*[a-f0-9]+:\s*62 63 15 b7 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%rdx\)\{1to8\},%ymm29,%ymm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 43 15 10 52 31 7b\s+vminmaxps\s\$0x7b,\(%r9\)\{1to4\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 15 97 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%rdx\)\{1to4\},%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 95 00 53 f4 7b\s+vminmaxsd\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 95 10 53 f4 7b\s+vminmaxsd\s\$0x7b,\{sae\},%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 23 95 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 95 00 53 31 7b\s+vminmaxsd\s\$0x7b,\(%r9\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 14 00 53 f4 7b\s+vminmaxsh\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 14 10 53 f4 7b\s+vminmaxsh\s\$0x7b,\{sae\},%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 23 14 07 53 b4 f5 00 00 00 10 7b\s+vminmaxsh\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 14 00 53 31 7b\s+vminmaxsh\s\$0x7b,\(%r9\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 15 00 53 f4 7b\s+vminmaxss\s\$0x7b,%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 03 15 10 53 f4 7b\s+vminmaxss\s\$0x7b,\{sae\},%xmm28,%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 23 15 07 53 b4 f5 00 00 00 10 7b\s+vminmaxss\s\$0x7b,0x10000000\(%rbp,%r14,8\),%xmm29,%xmm30\{%k7\} +\s*[a-f0-9]+:\s*62 43 15 00 53 31 7b\s+vminmaxss\s\$0x7b,\(%r9\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 95 00 53 71 7f 7b\s+vminmaxsd\s\$0x7b,0x3f8\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 95 87 53 72 80 7b\s+vminmaxsd\s\$0x7b,-0x400\(%rdx\),%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 63 14 00 53 71 7f 7b\s+vminmaxsh\s\$0x7b,0xfe\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 14 87 53 72 80 7b\s+vminmaxsh\s\$0x7b,-0x100\(%rdx\),%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 63 15 00 53 71 7f 7b\s+vminmaxss\s\$0x7b,0x1fc\(%rcx\),%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 63 15 87 53 72 80 7b\s+vminmaxss\s\$0x7b,-0x200\(%rdx\),%xmm29,%xmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 01 7e 08 7e f5\s+vmovd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 7d 08 d6 ee\s+vmovd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 6e f5\s+vmovw %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 7e ee\s+vmovw %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 08 2f f5\s+vcomxsd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 18 2f f5\s+vcomxsd \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 ff 08 2f b4 f5 00 00 00 10\s+vcomxsd 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 ff 08 2f 31\s+vcomxsd \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 2f f5\s+vcomxsh %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 18 2f f5\s+vcomxsh \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 25 7e 08 2f b4 f5 00 00 00 10\s+vcomxsh 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 45 7e 08 2f 31\s+vcomxsh \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 08 2f f5\s+vcomxss %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 18 2f f5\s+vcomxss \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 7e 08 2f b4 f5 00 00 00 10\s+vcomxss 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 7e 08 2f 31\s+vcomxss \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2f 71 7f\s+vcomxsd 0x3f8\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2f 72 80\s+vcomxsd -0x400\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2f 71 7f\s+vcomxsh 0xfe\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2f 72 80\s+vcomxsh -0x100\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2f 71 7f\s+vcomxss 0x1fc\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2f 72 80\s+vcomxss -0x200\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 08 2e f5\s+vucomxsd %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 ff 18 2e f5\s+vucomxsd \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 ff 08 2e b4 f5 00 00 00 10\s+vucomxsd 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 ff 08 2e 31\s+vucomxsd \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 08 2e f5\s+vucomxsh %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 05 7e 18 2e f5\s+vucomxsh \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 25 7e 08 2e b4 f5 00 00 00 10\s+vucomxsh 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 45 7e 08 2e 31\s+vucomxsh \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 08 2e f5\s+vucomxss %xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 01 7e 18 2e f5\s+vucomxss \{sae\},%xmm29,%xmm30 +\s*[a-f0-9]+:\s*62 21 7e 08 2e b4 f5 00 00 00 10\s+vucomxss 0x10000000\(%rbp,%r14,8\),%xmm30 +\s*[a-f0-9]+:\s*62 41 7e 08 2e 31\s+vucomxss \(%r9\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2e 71 7f\s+vucomxsd 0x3f8\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 ff 08 2e 72 80\s+vucomxsd -0x400\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2e 71 7f\s+vucomxsh 0xfe\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 65 7e 08 2e 72 80\s+vucomxsh -0x100\(%rdx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2e 71 7f\s+vucomxss 0x1fc\(%rcx\),%xmm30 +\s*[a-f0-9]+:\s*62 61 7e 08 2e 72 80\s+vucomxss -0x200\(%rdx\),%xmm30 +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s new file mode 100644 index 00000000000..628d2aebf0e --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-256-miscs.s @@ -0,0 +1,135 @@ +# Check 64bit AVX10.2/256 instructions + + .arch generic64 + .arch .avx10.2/256 + .text +_start: + .irp m, bf16, d, h, s + vminmaxp\m $123, %xmm28, %xmm29, %xmm30 + vminmaxp\m $123, %ymm28, %ymm29, %ymm30 + vminmaxp\m $123, 0x10000000(%rbp, %r14, 8), %ymm29, %ymm30{%k7} + vminmaxp\m $123, 4064(%rcx), %ymm29, %ymm30 + vminmaxp\m $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxp\m $123, 2032(%rcx), %xmm29, %xmm30 + .endr + + vminmaxpbf16 $123, (%r9){1to16}, %ymm29, %ymm30 + vminmaxpbf16 $123, -256(%rdx){1to16}, %ymm29, %ymm30{%k7}{z} + vminmaxpbf16 $123, (%r9){1to8}, %xmm29, %xmm30 + vminmaxpbf16 $123, -256(%rdx){1to8}, %xmm29, %xmm30{%k7}{z} + vminmaxpd $123, {sae}, %ymm28, %ymm29, %ymm30 + vminmaxpd $123, (%r9){1to4}, %ymm29, %ymm30 + vminmaxpd $123, -1024(%rdx){1to4}, %ymm29, %ymm30{%k7}{z} + vminmaxpd $123, (%r9){1to2}, %xmm29, %xmm30 + vminmaxpd $123, -1024(%rdx){1to2}, %xmm29, %xmm30{%k7}{z} + vminmaxph $123, {sae}, %ymm28, %ymm29, %ymm30 + vminmaxph $123, (%r9){1to16}, %ymm29, %ymm30 + vminmaxph $123, -256(%rdx){1to16}, %ymm29, %ymm30{%k7}{z} + vminmaxph $123, (%r9){1to8}, %xmm29, %xmm30 + vminmaxph $123, -256(%rdx){1to8}, %xmm29, %xmm30{%k7}{z} + vminmaxps $123, {sae}, %ymm28, %ymm29, %ymm30 + vminmaxps $123, (%r9){1to8}, %ymm29, %ymm30 + vminmaxps $123, -512(%rdx){1to8}, %ymm29, %ymm30{%k7}{z} + vminmaxps $123, (%r9){1to4}, %xmm29, %xmm30 + vminmaxps $123, -512(%rdx){1to4}, %xmm29, %xmm30{%k7}{z} + + .irp m, d, h, s + vminmaxs\m $123, %xmm28, %xmm29, %xmm30 + vminmaxs\m $123, {sae}, %xmm28, %xmm29, %xmm30 + vminmaxs\m $123, 0x10000000(%rbp, %r14, 8), %xmm29, %xmm30{%k7} + vminmaxs\m $123, (%r9), %xmm29, %xmm30 + .endr + + vminmaxsd $123, 1016(%rcx), %xmm29, %xmm30 + vminmaxsd $123, -1024(%rdx), %xmm29, %xmm30{%k7}{z} + vminmaxsh $123, 254(%rcx), %xmm29, %xmm30 + vminmaxsh $123, -256(%rdx), %xmm29, %xmm30{%k7}{z} + vminmaxss $123, 508(%rcx), %xmm29, %xmm30 + vminmaxss $123, -512(%rdx), %xmm29, %xmm30{%k7}{z} + + vmovd %xmm29, %xmm30 + vmovd.s %xmm29, %xmm30 + vmovw %xmm29, %xmm30 + vmovw.s %xmm29, %xmm30 + + .irp u, "", u + .irp m, d, h, s + v\u\()comxs\m %xmm29, %xmm30 + v\u\()comxs\m {sae}, %xmm29, %xmm30 + v\u\()comxs\m 0x10000000(%rbp, %r14, 8), %xmm30 + v\u\()comxs\m (%r9), %xmm30 + .endr + + v\u\()comxsd 1016(%rcx), %xmm30 + v\u\()comxsd -1024(%rdx), %xmm30 + v\u\()comxsh 254(%rcx), %xmm30 + v\u\()comxsh -256(%rdx), %xmm30 + v\u\()comxss 508(%rcx), %xmm30 + v\u\()comxss -512(%rdx), %xmm30 + .endr + +_intel: + .intel_syntax noprefix + .irp m, bf16, d, h, s + vminmaxp\m xmm30, xmm29, xmm28, 123 + vminmaxp\m ymm30, ymm29, ymm28, 123 + vminmaxp\m ymm30{k7}, ymm29, [rbp+r14*8+0x10000000], 123 + vminmaxp\m ymm30, ymm29, YMMWORD PTR [rcx+4064], 123 + vminmaxp\m xmm30{k7}, xmm29, [rbp+r14*8+0x10000000], 123 + vminmaxp\m xmm30, xmm29, XMMWORD PTR [rcx+2032], 123 + .endr + + vminmaxpbf16 ymm30, ymm29, [r9]{1to16}, 123 + vminmaxpbf16 ymm30{k7}{z}, ymm29, WORD PTR [rdx-256]{1to16}, 123 + vminmaxpbf16 xmm30, xmm29, [r9]{1to8}, 123 + vminmaxpbf16 xmm30{k7}{z}, xmm29, WORD PTR [rdx-256]{1to8}, 123 + vminmaxpd ymm30, ymm29, ymm28, {sae}, 123 + vminmaxpd ymm30, ymm29, QWORD PTR [r9]{1to4}, 123 + vminmaxpd ymm30{k7}{z}, ymm29, [rdx-1024]{1to4}, 123 + vminmaxpd xmm30, xmm29, QWORD PTR [r9]{1to2}, 123 + vminmaxpd xmm30{k7}{z}, xmm29, [rdx-1024]{1to2}, 123 + vminmaxph ymm30, ymm29, ymm28, {sae}, 123 + vminmaxph ymm30, ymm29, [r9]{1to16}, 123 + vminmaxph ymm30{k7}{z}, ymm29, WORD PTR [rdx-256]{1to16}, 123 + vminmaxph xmm30, xmm29, WORD PTR [r9]{1to8}, 123 + vminmaxph xmm30{k7}{z}, xmm29, [rdx-256]{1to8}, 123 + vminmaxps ymm30, ymm29, ymm28, {sae}, 123 + vminmaxps ymm30, ymm29, DWORD PTR [r9]{1to8}, 123 + vminmaxps ymm30{k7}{z}, ymm29, [rdx-512]{1to8}, 123 + vminmaxps xmm30, xmm29, [r9]{1to4}, 123 + vminmaxps xmm30{k7}{z}, xmm29, DWORD PTR [rdx-512]{1to4}, 123 + + .irp m, d, h, s + vminmaxs\m xmm30, xmm29, xmm28, 123 + vminmaxs\m xmm30, xmm29, xmm28, {sae}, 123 + vminmaxs\m xmm30{k7}, xmm29, [rbp+r14*8+0x10000000], 123 + vminmaxs\m xmm30, xmm29, [r9], 123 + .endr + + vminmaxsd xmm30, xmm29, QWORD PTR [rcx+1016], 123 + vminmaxsd xmm30{k7}{z}, xmm29, QWORD PTR [rdx-1024], 123 + vminmaxsh xmm30, xmm29, [rcx+254], 123 + vminmaxsh xmm30{k7}{z}, xmm29, [rdx-256], 123 + vminmaxss xmm30, xmm29, DWORD PTR [rcx+508], 123 + vminmaxss xmm30{k7}{z}, xmm29, [rdx-512], 123 + + vmovd xmm30, xmm29 + vmovd.s xmm30, xmm29 + vmovw xmm30, xmm29 + vmovw.s xmm30, xmm29 + + .irp u, "", u + .irp m, d, h, s + v\u\()comxs\m xmm30, xmm29 + v\u\()comxs\m xmm30, xmm29, {sae} + v\u\()comxs\m xmm30, [rbp+r14*8+0x10000000] + v\u\()comxs\m xmm30, [r9] + .endr + + v\u\()comxsd xmm30, QWORD PTR [rcx+1016] + v\u\()comxsd xmm30, [rdx-1024] + v\u\()comxsh xmm30, [rcx+254] + v\u\()comxsh xmm30, WORD PTR [rdx-256] + v\u\()comxss xmm30, [rcx+508] + v\u\()comxss xmm30, DWORD PTR [rdx-512] + .endr diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d new file mode 100644 index 00000000000..64bcf19896c --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs-intel.d @@ -0,0 +1,34 @@ +#objdump: -dw -Mintel +#name: x86_64 AVX10.2/512 minmax insns (Intel disassembly) +#source: x86-64-avx10_2-512-miscs.s + +.*: +file format .* + +Disassembly of section \.text: + +#... +[a-f0-9]+ <_intel>: +\s*[a-f0-9]+:\s*62 03 17 40 52 f4 7b\s+vminmaxpbf16 zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 23 17 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16 zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 17 40 52 71 7f 7b\s+vminmaxpbf16 zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 03 95 40 52 f4 7b\s+vminmaxpd zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 23 95 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpd zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 95 40 52 71 7f 7b\s+vminmaxpd zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 03 14 40 52 f4 7b\s+vminmaxph zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 23 14 47 52 b4 f5 00 00 00 10 7b\s+vminmaxph zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 14 40 52 71 7f 7b\s+vminmaxph zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 03 15 40 52 f4 7b\s+vminmaxps zmm30,zmm29,zmm28,0x7b +\s*[a-f0-9]+:\s*62 23 15 47 52 b4 f5 00 00 00 10 7b\s+vminmaxps zmm30\{k7\},zmm29,ZMMWORD PTR \[rbp\+r14\*8\+0x10000000\],0x7b +\s*[a-f0-9]+:\s*62 63 15 40 52 71 7f 7b\s+vminmaxps zmm30,zmm29,ZMMWORD PTR \[rcx\+0x1fc0\],0x7b +\s*[a-f0-9]+:\s*62 43 17 50 52 31 7b\s+vminmaxpbf16 zmm30,zmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 17 d7 52 72 80 7b\s+vminmaxpbf16 zmm30\{k7\}\{z\},zmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 95 10 52 f4 7b\s+vminmaxpd zmm30,zmm29,zmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 43 95 50 52 31 7b\s+vminmaxpd zmm30,zmm29,QWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 95 d7 52 72 80 7b\s+vminmaxpd zmm30\{k7\}\{z\},zmm29,QWORD BCST \[rdx-0x400\],0x7b +\s*[a-f0-9]+:\s*62 03 14 10 52 f4 7b\s+vminmaxph zmm30,zmm29,zmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 43 14 50 52 31 7b\s+vminmaxph zmm30,zmm29,WORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 14 d7 52 72 80 7b\s+vminmaxph zmm30\{k7\}\{z\},zmm29,WORD BCST \[rdx-0x100\],0x7b +\s*[a-f0-9]+:\s*62 03 15 10 52 f4 7b\s+vminmaxps zmm30,zmm29,zmm28\{sae\},0x7b +\s*[a-f0-9]+:\s*62 43 15 50 52 31 7b\s+vminmaxps zmm30,zmm29,DWORD BCST \[r9\],0x7b +\s*[a-f0-9]+:\s*62 63 15 d7 52 72 80 7b\s+vminmaxps zmm30\{k7\}\{z\},zmm29,DWORD BCST \[rdx-0x200\],0x7b +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d new file mode 100644 index 00000000000..9a6653e0f72 --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.d @@ -0,0 +1,32 @@ +#objdump: -dw +#name: x86_64 AVX10.2/512 minmax insns + +.*: +file format .* + +Disassembly of section \.text: + +0+ <_start>: +\s*[a-f0-9]+:\s*62 03 17 40 52 f4 7b\s+vminmaxpbf16\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 17 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpbf16\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 17 40 52 71 7f 7b\s+vminmaxpbf16\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 03 95 40 52 f4 7b\s+vminmaxpd\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 95 47 52 b4 f5 00 00 00 10 7b\s+vminmaxpd\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 95 40 52 71 7f 7b\s+vminmaxpd\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 03 14 40 52 f4 7b\s+vminmaxph\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 14 47 52 b4 f5 00 00 00 10 7b\s+vminmaxph\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 14 40 52 71 7f 7b\s+vminmaxph\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 03 15 40 52 f4 7b\s+vminmaxps\s\$0x7b,%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 23 15 47 52 b4 f5 00 00 00 10 7b\s+vminmaxps\s\$0x7b,0x10000000\(%rbp,%r14,8\),%zmm29,%zmm30\{%k7\} +\s*[a-f0-9]+:\s*62 63 15 40 52 71 7f 7b\s+vminmaxps\s\$0x7b,0x1fc0\(%rcx\),%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 43 17 50 52 31 7b\s+vminmaxpbf16\s\$0x7b,\(%r9\)\{1to32\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 17 d7 52 72 80 7b\s+vminmaxpbf16\s\$0x7b,-0x100\(%rdx\)\{1to32\},%zmm29,%zmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 95 10 52 f4 7b\s+vminmaxpd\s\$0x7b,\{sae\},%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 43 95 50 52 31 7b\s+vminmaxpd\s\$0x7b,\(%r9\)\{1to8\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 95 d7 52 72 80 7b\s+vminmaxpd\s\$0x7b,-0x400\(%rdx\)\{1to8\},%zmm29,%zmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 14 10 52 f4 7b\s+vminmaxph\s\$0x7b,\{sae\},%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 43 14 50 52 31 7b\s+vminmaxph\s\$0x7b,\(%r9\)\{1to32\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 14 d7 52 72 80 7b\s+vminmaxph\s\$0x7b,-0x100\(%rdx\)\{1to32\},%zmm29,%zmm30\{%k7\}\{z\} +\s*[a-f0-9]+:\s*62 03 15 10 52 f4 7b\s+vminmaxps\s\$0x7b,\{sae\},%zmm28,%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 43 15 50 52 31 7b\s+vminmaxps\s\$0x7b,\(%r9\)\{1to16\},%zmm29,%zmm30 +\s*[a-f0-9]+:\s*62 63 15 d7 52 72 80 7b\s+vminmaxps\s\$0x7b,-0x200\(%rdx\)\{1to16\},%zmm29,%zmm30\{%k7\}\{z\} +#pass diff --git a/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s new file mode 100644 index 00000000000..d938e53ae8d --- /dev/null +++ b/gas/testsuite/gas/i386/x86-64-avx10_2-512-miscs.s @@ -0,0 +1,43 @@ +# Check 64bit AVX10.2/512 instructions + + .arch generic64 + .arch .avx10.2/512 + .text +_start: + .irp m, bf16, d, h, s + vminmaxp\m $123, %zmm28, %zmm29, %zmm30 + vminmaxp\m $123, 0x10000000(%rbp, %r14, 8), %zmm29, %zmm30{%k7} + vminmaxp\m $123, 8128(%rcx), %zmm29, %zmm30 + .endr + + vminmaxpbf16 $123, (%r9){1to32}, %zmm29, %zmm30 + vminmaxpbf16 $123, -256(%rdx){1to32}, %zmm29, %zmm30{%k7}{z} + vminmaxpd $123, {sae}, %zmm28, %zmm29, %zmm30 + vminmaxpd $123, (%r9){1to8}, %zmm29, %zmm30 + vminmaxpd $123, -1024(%rdx){1to8}, %zmm29, %zmm30{%k7}{z} + vminmaxph $123, {sae}, %zmm28, %zmm29, %zmm30 + vminmaxph $123, (%r9){1to32}, %zmm29, %zmm30 + vminmaxph $123, -256(%rdx){1to32}, %zmm29, %zmm30{%k7}{z} + vminmaxps $123, {sae}, %zmm28, %zmm29, %zmm30 + vminmaxps $123, (%r9){1to16}, %zmm29, %zmm30 + vminmaxps $123, -512(%rdx){1to16}, %zmm29, %zmm30{%k7}{z} + +_intel: + .intel_syntax noprefix + .irp m, bf16, d, h, s + vminmaxp\m zmm30, zmm29, zmm28, 123 + vminmaxp\m zmm30{k7}, zmm29, [rbp+r14*8+0x10000000], 123 + vminmaxp\m zmm30, zmm29, ZMMWORD PTR [rcx+8128], 123 + .endr + + vminmaxpbf16 zmm30, zmm29, [r9]{1to32}, 123 + vminmaxpbf16 zmm30{k7}{z}, zmm29, WORD PTR [rdx-256]{1to32}, 123 + vminmaxpd zmm30, zmm29, zmm28, {sae}, 123 + vminmaxpd zmm30, zmm29, QWORD PTR [r9]{1to8}, 123 + vminmaxpd zmm30{k7}{z}, zmm29, [rdx-1024]{1to8}, 123 + vminmaxph zmm30, zmm29, zmm28, {sae}, 123 + vminmaxph zmm30, zmm29, WORD PTR [r9]{1to32}, 123 + vminmaxph zmm30{k7}{z}, zmm29, [rdx-256]{1to32}, 123 + vminmaxps zmm30, zmm29, zmm28, {sae}, 123 + vminmaxps zmm30, zmm29, [r9]{1to16}, 123 + vminmaxps zmm30{k7}{z}, zmm29, DWORD PTR [rdx-512]{1to16}, 123 diff --git a/gas/testsuite/gas/i386/x86-64.exp b/gas/testsuite/gas/i386/x86-64.exp index ebdc2ad369b..5e26d97e8ad 100644 --- a/gas/testsuite/gas/i386/x86-64.exp +++ b/gas/testsuite/gas/i386/x86-64.exp @@ -514,6 +514,10 @@ run_dump_test "x86-64-avx10_2-512-satcvt" run_dump_test "x86-64-avx10_2-512-satcvt-intel" run_dump_test "x86-64-avx10_2-256-satcvt" run_dump_test "x86-64-avx10_2-256-satcvt-intel" +run_dump_test "x86-64-avx10_2-512-miscs" +run_dump_test "x86-64-avx10_2-512-miscs-intel" +run_dump_test "x86-64-avx10_2-256-miscs" +run_dump_test "x86-64-avx10_2-256-miscs-intel" run_dump_test "x86-64-clzero" run_dump_test "x86-64-mwaitx-bdver4" run_list_test "x86-64-mwaitx-reg" diff --git a/opcodes/i386-dis-evex-len.h b/opcodes/i386-dis-evex-len.h index a02609c50f2..e931fdd655a 100644 --- a/opcodes/i386-dis-evex-len.h +++ b/opcodes/i386-dis-evex-len.h @@ -1,4 +1,14 @@ static const struct dis386 evex_len_table[][3] = { + /* EVEX_LEN_0F7E_P_1_W_0 */ + { + { "vmovd", { XMScalar, EXd }, 0 }, + }, + + /* EVEX_LEN_0FD6_P_2_W_0 */ + { + { "vmovd", { EXdS, XMScalar }, 0 }, + }, + /* EVEX_LEN_0F3816 */ { { Bad_Opcode }, @@ -145,4 +155,14 @@ static const struct dis386 evex_len_table[][3] = { { VEX_W_TABLE (EVEX_W_0F3A43_L_n) }, { VEX_W_TABLE (EVEX_W_0F3A43_L_n) }, }, + + /* EVEX_LEN_MAP5_6E */ + { + { PREFIX_TABLE (PREFIX_EVEX_MAP5_6E_L_0) }, + }, + + /* EVEX_LEN_MAP5_7E */ + { + { PREFIX_TABLE (PREFIX_EVEX_MAP5_7E_L_0) }, + }, }; diff --git a/opcodes/i386-dis-evex-prefix.h b/opcodes/i386-dis-evex-prefix.h index 171600190a6..16fb2698390 100644 --- a/opcodes/i386-dis-evex-prefix.h +++ b/opcodes/i386-dis-evex-prefix.h @@ -1,3 +1,17 @@ + /* PREFIX_EVEX_0F2E */ + { + { "%XEvucomis%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "vucomxs%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "%XEvucomis%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + { "vucomxs%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + }, + /* PREFIX_EVEX_0F2F */ + { + { "%XEvcomis%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "vcomxs%XS", { XMScalar, EXd, EXxEVexS }, 0 }, + { "%XEvcomis%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + { "vcomxs%XD", { XMScalar, EXq, EXxEVexS }, 0 }, + }, /* PREFIX_EVEX_0F5B */ { { VEX_W_TABLE (EVEX_W_0F5B_P_0) }, @@ -324,6 +338,19 @@ { "%XEvmpsadbw", { XM, Vex, EXx, Ib }, 0 }, { "vdbpsadbw", { XM, Vex, EXx, Ib }, 0 }, }, + /* PREFIX_EVEX_0F3A52 */ + { + { "vminmaxp%XH", { XM, Vex, EXxh, EXxEVexS, Ib }, 0 }, + { Bad_Opcode }, + { "vminmaxp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, 0 }, + { "vminmaxp%XB", { XM, Vex, EXxh, Ib }, 0 }, + }, + /* PREFIX_EVEX_0F3A53 */ + { + { "vminmaxs%XH", { XMScalar, VexScalar, EXw, EXxEVexS, Ib }, 0 }, + { Bad_Opcode }, + { "vminmaxs%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, 0 }, + }, /* PREFIX_EVEX_0F3A56 */ { { "vreducep%XH", { XM, EXxh, EXxEVexS, Ib }, 0 }, @@ -441,12 +468,13 @@ }, /* PREFIX_EVEX_MAP5_2E */ { - { "vucomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vucomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vucomxs%XH", { XMScalar, EXw, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP5_2F */ { - { "vcomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, - { Bad_Opcode }, + { "vcomisY%XH", { XMScalar, EXw, EXxEVexS }, 0 }, + { "vcomxs%XH", { XMScalar, EXw, EXxEVexS }, 0 }, { "vcoms%XB", { XMScalar, EXw, EXxEVexS }, 0 }, }, /* PREFIX_EVEX_MAP5_51 */ @@ -546,6 +574,12 @@ { VEX_W_TABLE (EVEX_W_MAP5_6D_P_2) }, { "vcvttsd2sis", { Gdq, EXq, EXxEVexS }, 0 }, }, + /* PREFIX_EVEX_MAP5_6E_L_0 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (EVEX_W_MAP5_6E_P_1) }, + { "vmovwY", { XMScalar, Edw }, 0 }, + }, /* PREFIX_EVEX_MAP5_74 */ { { "vcvtbiasp%XH2bf8s", { XMxmmq, Vex, EXxh }, 0 }, @@ -591,6 +625,12 @@ { "vcvtp%XH2w", { XM, EXxh, EXxEVexR }, 0 }, { "vcvtuw2p%XH", { XM, EXxh, EXxEVexR }, 0 }, }, + /* PREFIX_EVEX_MAP5_7E_L_0 */ + { + { Bad_Opcode }, + { VEX_W_TABLE (EVEX_W_MAP5_7E_P_1) }, + { "vmovw", { Edw, XMScalar }, 0 }, + }, /* PREFIX_EVEX_MAP6_13 */ { { "vcvts%XH2ss", { XMScalar, VexScalar, EXw, EXxEVexS }, 0 }, diff --git a/opcodes/i386-dis-evex-w.h b/opcodes/i386-dis-evex-w.h index 344eaf3d527..1bb716c0ba7 100644 --- a/opcodes/i386-dis-evex-w.h +++ b/opcodes/i386-dis-evex-w.h @@ -117,7 +117,7 @@ }, /* EVEX_W_0F7E_P_1 */ { - { Bad_Opcode }, + { EVEX_LEN_TABLE (EVEX_LEN_0F7E_P_1_W_0) }, { VEX_LEN_TABLE (VEX_LEN_0F7E_P_1) }, }, /* EVEX_W_0F7F_P_1 */ @@ -151,7 +151,7 @@ }, /* EVEX_W_0FD6 */ { - { Bad_Opcode }, + { EVEX_LEN_TABLE (EVEX_LEN_0FD6_P_2_W_0) }, { VEX_LEN_TABLE (VEX_LEN_0FD6) }, }, /* EVEX_W_0FE2 */ @@ -495,8 +495,16 @@ { "vcvttps2qqs", { XM, EXEvexHalfBcstXmmq, EXxEVexS }, 0 }, { "vcvttpd2qqs", { XM, EXx, EXxEVexS }, 0 }, }, + /* EVEX_W_MAP5_6E_P_1 */ + { + { "vmovw", { XMScalar, EXw }, 0 }, + }, /* EVEX_W_MAP5_7A_P_3 */ { { "vcvtudq2ph%XY", { XMxmmq, EXx, EXxEVexR }, 0 }, { "vcvtuqq2ph%XZ", { XMM, EXx, EXxEVexR }, 0 }, }, + /* EVEX_W_MAP5_7E_P_1 */ + { + { "vmovw", { EXwS, XMScalar }, 0 }, + }, diff --git a/opcodes/i386-dis-evex.h b/opcodes/i386-dis-evex.h index 1785d2fdd27..751d59e55fb 100644 --- a/opcodes/i386-dis-evex.h +++ b/opcodes/i386-dis-evex.h @@ -53,8 +53,8 @@ static const struct dis386 evex_table[][256] = { { "%XEvmovntpX", { Mx, XM }, PREFIX_OPCODE }, { PREFIX_TABLE (PREFIX_VEX_0F2C) }, { PREFIX_TABLE (PREFIX_VEX_0F2D) }, - { PREFIX_TABLE (PREFIX_0F2E) }, - { PREFIX_TABLE (PREFIX_0F2F) }, + { PREFIX_TABLE (PREFIX_EVEX_0F2E) }, + { PREFIX_TABLE (PREFIX_EVEX_0F2F) }, /* 30 */ { Bad_Opcode }, { Bad_Opcode }, @@ -676,8 +676,8 @@ static const struct dis386 evex_table[][256] = { /* 50 */ { "vrangep%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, { "vranges%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, - { Bad_Opcode }, - { Bad_Opcode }, + { PREFIX_TABLE (PREFIX_EVEX_0F3A52) }, + { PREFIX_TABLE (PREFIX_EVEX_0F3A53) }, { "vfixupimmp%XW", { XM, Vex, EXx, EXxEVexS, Ib }, PREFIX_DATA }, { "vfixupimms%XW", { XMScalar, VexScalar, EXdq, EXxEVexS, Ib }, PREFIX_DATA }, { PREFIX_TABLE (PREFIX_EVEX_0F3A56) }, @@ -1289,7 +1289,7 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_MAP5_6B) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_6C) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_6D) }, - { "vmovwY", { XMScalar, Edw }, PREFIX_DATA }, + { EVEX_LEN_TABLE (EVEX_LEN_MAP5_6E) }, { Bad_Opcode }, /* 70 */ { Bad_Opcode }, @@ -1307,7 +1307,7 @@ static const struct dis386 evex_table[][256] = { { PREFIX_TABLE (PREFIX_EVEX_MAP5_7B) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_7C) }, { PREFIX_TABLE (PREFIX_EVEX_MAP5_7D) }, - { "vmovw", { Edw, XMScalar }, PREFIX_DATA }, + { EVEX_LEN_TABLE (EVEX_LEN_MAP5_7E) }, { Bad_Opcode }, /* 80 */ { Bad_Opcode }, diff --git a/opcodes/i386-dis.c b/opcodes/i386-dis.c index 8795e397082..237f0f77744 100644 --- a/opcodes/i386-dis.c +++ b/opcodes/i386-dis.c @@ -1155,6 +1155,8 @@ enum PREFIX_VEX_MAP7_F6_L_0_W_0_R_0_X86_64, PREFIX_VEX_MAP7_F8_L_0_W_0_R_0_X86_64, + PREFIX_EVEX_0F2E, + PREFIX_EVEX_0F2F, PREFIX_EVEX_0F5B, PREFIX_EVEX_0F6F, PREFIX_EVEX_0F70, @@ -1207,6 +1209,8 @@ enum PREFIX_EVEX_0F3A26, PREFIX_EVEX_0F3A27, PREFIX_EVEX_0F3A42_W_0, + PREFIX_EVEX_0F3A52, + PREFIX_EVEX_0F3A53, PREFIX_EVEX_0F3A56, PREFIX_EVEX_0F3A57, PREFIX_EVEX_0F3A66, @@ -1245,6 +1249,7 @@ enum PREFIX_EVEX_MAP5_6B, PREFIX_EVEX_MAP5_6C, PREFIX_EVEX_MAP5_6D, + PREFIX_EVEX_MAP5_6E_L_0, PREFIX_EVEX_MAP5_74, PREFIX_EVEX_MAP5_78, PREFIX_EVEX_MAP5_79, @@ -1252,6 +1257,7 @@ enum PREFIX_EVEX_MAP5_7B, PREFIX_EVEX_MAP5_7C, PREFIX_EVEX_MAP5_7D, + PREFIX_EVEX_MAP5_7E_L_0, PREFIX_EVEX_MAP6_13, PREFIX_EVEX_MAP6_2C, @@ -1521,7 +1527,9 @@ enum enum { - EVEX_LEN_0F3816 = 0, + EVEX_LEN_0F7E_P_1_W_0 = 0, + EVEX_LEN_0FD6_P_2_W_0, + EVEX_LEN_0F3816, EVEX_LEN_0F3819, EVEX_LEN_0F381A, EVEX_LEN_0F381B, @@ -1541,7 +1549,10 @@ enum EVEX_LEN_0F3A39, EVEX_LEN_0F3A3A, EVEX_LEN_0F3A3B, - EVEX_LEN_0F3A43 + EVEX_LEN_0F3A43, + + EVEX_LEN_MAP5_6E, + EVEX_LEN_MAP5_7E, }; enum @@ -1779,7 +1790,9 @@ enum EVEX_W_MAP5_6C_P_2, EVEX_W_MAP5_6D_P_0, EVEX_W_MAP5_6D_P_2, + EVEX_W_MAP5_6E_P_1, EVEX_W_MAP5_7A_P_3, + EVEX_W_MAP5_7E_P_1, }; typedef bool (*op_rtn) (instr_info *ins, int bytemode, int sizeflag); @@ -3315,16 +3328,16 @@ static const struct dis386 prefix_table[][4] = { /* PREFIX_0F2E */ { - { "%XEVucomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, + { "VucomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, { Bad_Opcode }, - { "%XEVucomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, + { "VucomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, }, /* PREFIX_0F2F */ { - { "%XEVcomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, + { "VcomisYX", { XMScalar, EXd, EXxEVexS }, 0 }, { Bad_Opcode }, - { "%XEVcomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, + { "VcomisYX", { XMScalar, EXq, EXxEVexS }, 0 }, }, /* PREFIX_0F51 */ diff --git a/opcodes/i386-opc.tbl b/opcodes/i386-opc.tbl index 502264cb78a..1684161ce6e 100644 --- a/opcodes/i386-opc.tbl +++ b/opcodes/i386-opc.tbl @@ -3510,4 +3510,15 @@ vcvttss2sis, 0xf3, AVX10_2, Modrm|Map5|EVexLIG|Disp8MemShift=2|N +vminmaxpbf16, 0xf252, AVX10_2, Modrm|Masking|Space0F3A|Src1VVVV|VexW0|Disp8ShiftVL|Broadcast|CheckOperandSize|NoSuf, { Imm8, RegXMM|RegYMM|RegZMM|Word|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM } +vminmaxp, 0x52, AVX10_2, Modrm|Masking|Space0F3A||Broadcast|Src1VVVV|Disp8ShiftVL|CheckOperandSize|NoSuf|SAE, { Imm8, RegXMM|RegYMM|RegZMM||Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM } +vminmaxs, 0x53, AVX10_2, Modrm|EVexLIG|Masking|Space0F3A|Src1VVVV||Disp8MemShift|CheckOperandSize|NoSuf|SAE, { Imm8, RegXMM||Unspecified|BaseIndex, RegXMM, RegXMM } + +vmovd, 0xf37e, AVX10_2, Load|Modrm|EVex128|VexW0|Space0F|Disp8MemShift=2|NoSuf, { Dword|Unspecified|BaseIndex|RegXMM, RegXMM } +vmovd, 0x66d6, AVX10_2, Modrm|EVex128|VexW0|Space0F|Disp8MemShift=2|NoSuf, { RegXMM, Dword|Unspecified|BaseIndex|RegXMM } +vmovw, 0xf36e, AVX10_2, D|Modrm|EVex128|VexW0|Map5|Disp8MemShift=1|NoSuf, { Word|Unspecified|BaseIndex|RegXMM, RegXMM } + +vcomxs, 0x2f, AVX10_2, Modrm|EVexLIG|||Disp8MemShift|NoSuf|SAE, { RegXMM||Unspecified|BaseIndex, RegXMM } +vucomxs, 0x2e, AVX10_2, Modrm|EVexLIG|||Disp8MemShift|NoSuf|SAE, { RegXMM||Unspecified|BaseIndex, RegXMM } + // AVX10.2 instructions end.