From patchwork Fri Jul 5 07:08:25 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jan Beulich X-Patchwork-Id: 93400 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 A09B8387089F for ; Fri, 5 Jul 2024 07:09:09 +0000 (GMT) X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mail-lf1-x129.google.com (mail-lf1-x129.google.com [IPv6:2a00:1450:4864:20::129]) by sourceware.org (Postfix) with ESMTPS id B2AEF384A054 for ; Fri, 5 Jul 2024 07:08:33 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B2AEF384A054 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=suse.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B2AEF384A054 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::129 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1720163317; cv=none; b=dUt1UHJoYKM4qvZQblRiYWjN3OciABoJ1OiAsXDZ3HQrDzVAQEg1IvhLnwFsaf0qE44YKHixlGKKNYXrl7YeV0/xmLKATw2jC71N2Pixq76xKLGq3Ht3IeMWJe2vyx3bBTcujc6ihpcf+GU1lH4WpzscpatHP5ACpSnB0b5AC8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1720163317; c=relaxed/simple; bh=t7B1T1w7ADxY5fCIJrUefsKNivU6O6byL0cgnvq1eTg=; h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject; b=v2rgyA4cYQzM9iKtnr7W7cOmthyo681yH85C4OTjs6lUtyLsDyT+cjs/gHq4u2TyWlIIWZZ6FTMKc2S8I+gPoKIMzrszubruMsqzahH6K+c+jHFY7IfgEOFV6BnvMGdCnpzdyRoaaL3JV0gqqEJIfRd6RBadIZD1dVGSK1ZwLPk= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-lf1-x129.google.com with SMTP id 2adb3069b0e04-52e98087e32so1459589e87.2 for ; Fri, 05 Jul 2024 00:08:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=google; t=1720163312; x=1720768112; darn=sourceware.org; h=content-transfer-encoding:autocrypt:subject:from:cc:to :content-language:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to; bh=J91HIhjcibDNZw4PZp6mzH1gd6EaM8vVQu7s4XxTFco=; b=cmiVg8B++Wt9zfEAQGqQSCpnGnB2DMOzNzhWklo/AdKKRlagl1neR7QeQjORfB9D0R snDMfNoLBOQFAnuyUThoBs+KRcx17bIXLf8pEAJwksHhMndnJrfk3ShpDqaZOmL07t4e LCPoOeTDGb0gOMJ1fG+Dt9fN082DaOouNXQamUHRBHRQLtrhuGG8/6x+oG2DjUC89Cku rqc0qarhy4HgdVQ3/DzySfa9npVl67/tzT7G3XZhjFaOLejs9MItOnuG3Niq8/VDyTei K3KN7rfemR+qtHG5WFR6dwsDEiAOSmlcrTNF/9bH2erw8gBS99Ktg0Ppn4H397NrqCUT OwfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720163312; x=1720768112; h=content-transfer-encoding:autocrypt:subject:from:cc:to :content-language:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=J91HIhjcibDNZw4PZp6mzH1gd6EaM8vVQu7s4XxTFco=; b=kPlkxbF3YXa6FjeNQAKSrT6CmncJ7XgdafbxmltxfeXc5l2rLZpcpCE3CeksumHNhW m6P6iya3KKak3DRNsT9vbwwHd8rqVdbz2rZPiv6HsCtPc7qUq7J3hgTseXCaL08yFC8I l6+lGkX2rJsCP6brdZmB0+756jTmKzR72bw0HY+TXr1WTSkkHC1hXLQFs3e3lNFcW1eU EBGhsSL3f+m2cKWoKLYOUlP6PQ5DJzRwlC1WAVwtljPel/OuRV8d7LJeCkGHLaSMEdXX aIUBXH8NpAikVGHx0ll8kElXYsoXyn7MaloC8V7vGWIikChPsmKMmLymWpTSfy37s7rh pNfA== X-Gm-Message-State: AOJu0Ywd+hzTKAb68ttnAYZzZa8/U04T1KQNRnudoW+Y+8K+G+r2UwdO v8IX0gulmGLiv+h++BU6Whkc/S/MAp/YY3E3nyG+YrTF6KfQMjULrXmGRY/ncqvXs6f2mYlXXKA = X-Google-Smtp-Source: AGHT+IHP/3d/UjCRFZXBxAkfs7tL7TCIDnSjn77QCfGy9YbP2Bk/lT1OtBrotOMQkT6aTN3EPIcGZw== X-Received: by 2002:ac2:5eda:0:b0:52c:9e51:c3f with SMTP id 2adb3069b0e04-52ea06b85a9mr2414944e87.42.1720163312041; Fri, 05 Jul 2024 00:08:32 -0700 (PDT) Received: from [10.156.60.236] (ip-037-024-206-209.um08.pools.vodafone-ip.de. [37.24.206.209]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-7080256bf09sm13279910b3a.66.2024.07.05.00.08.29 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 05 Jul 2024 00:08:31 -0700 (PDT) Message-ID: <21d0b90a-468c-49ce-bbe8-112497f3f2ee@suse.com> Date: Fri, 5 Jul 2024 09:08:25 +0200 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: Binutils Cc: Lili Cui , "H.J. Lu" From: Jan Beulich Subject: [PATCH] x86/APX: correct TEST/CTESTcc with 1st operand being a memory one Autocrypt: addr=jbeulich@suse.com; keydata= xsDiBFk3nEQRBADAEaSw6zC/EJkiwGPXbWtPxl2xCdSoeepS07jW8UgcHNurfHvUzogEq5xk hu507c3BarVjyWCJOylMNR98Yd8VqD9UfmX0Hb8/BrA+Hl6/DB/eqGptrf4BSRwcZQM32aZK 7Pj2XbGWIUrZrd70x1eAP9QE3P79Y2oLrsCgbZJfEwCgvz9JjGmQqQkRiTVzlZVCJYcyGGsD /0tbFCzD2h20ahe8rC1gbb3K3qk+LpBtvjBu1RY9drYk0NymiGbJWZgab6t1jM7sk2vuf0Py O9Hf9XBmK0uE9IgMaiCpc32XV9oASz6UJebwkX+zF2jG5I1BfnO9g7KlotcA/v5ClMjgo6Gl MDY4HxoSRu3i1cqqSDtVlt+AOVBJBACrZcnHAUSuCXBPy0jOlBhxPqRWv6ND4c9PH1xjQ3NP nxJuMBS8rnNg22uyfAgmBKNLpLgAGVRMZGaGoJObGf72s6TeIqKJo/LtggAS9qAUiuKVnygo 3wjfkS9A3DRO+SpU7JqWdsveeIQyeyEJ/8PTowmSQLakF+3fote9ybzd880fSmFuIEJldWxp Y2ggPGpiZXVsaWNoQHN1c2UuY29tPsJgBBMRAgAgBQJZN5xEAhsDBgsJCAcDAgQVAggDBBYC AwECHgECF4AACgkQoDSui/t3IH4J+wCfQ5jHdEjCRHj23O/5ttg9r9OIruwAn3103WUITZee e7Sbg12UgcQ5lv7SzsFNBFk3nEQQCACCuTjCjFOUdi5Nm244F+78kLghRcin/awv+IrTcIWF hUpSs1Y91iQQ7KItirz5uwCPlwejSJDQJLIS+QtJHaXDXeV6NI0Uef1hP20+y8qydDiVkv6l IreXjTb7DvksRgJNvCkWtYnlS3mYvQ9NzS9PhyALWbXnH6sIJd2O9lKS1Mrfq+y0IXCP10eS FFGg+Av3IQeFatkJAyju0PPthyTqxSI4lZYuJVPknzgaeuJv/2NccrPvmeDg6Coe7ZIeQ8Yj t0ARxu2xytAkkLCel1Lz1WLmwLstV30g80nkgZf/wr+/BXJW/oIvRlonUkxv+IbBM3dX2OV8 AmRv1ySWPTP7AAMFB/9PQK/VtlNUJvg8GXj9ootzrteGfVZVVT4XBJkfwBcpC/XcPzldjv+3 HYudvpdNK3lLujXeA5fLOH+Z/G9WBc5pFVSMocI71I8bT8lIAzreg0WvkWg5V2WZsUMlnDL9 mpwIGFhlbM3gfDMs7MPMu8YQRFVdUvtSpaAs8OFfGQ0ia3LGZcjA6Ik2+xcqscEJzNH+qh8V m5jjp28yZgaqTaRbg3M/+MTbMpicpZuqF4rnB0AQD12/3BNWDR6bmh+EkYSMcEIpQmBM51qM EKYTQGybRCjpnKHGOxG0rfFY1085mBDZCH5Kx0cl0HVJuQKC+dV2ZY5AqjcKwAxpE75MLFkr wkkEGBECAAkFAlk3nEQCGwwACgkQoDSui/t3IH7nnwCfcJWUDUFKdCsBH/E5d+0ZnMQi+G0A nAuWpQkjM1ASeQwSHEeAWPgskBQL X-Spam-Status: No, score=-3024.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, 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 While they properly inherited D and C, code processing the reversal of operands wasn't updated accordingly (and "reversed" operands also weren't tested anywhere). --- a/gas/config/tc-i386.c +++ b/gas/config/tc-i386.c @@ -9783,22 +9783,26 @@ match_template (char mnem_suffix) goto check_operands_345; } else if (t->opcode_space == SPACE_EVEXMAP4 - && t->opcode_modifier.w) + && t->operands >= 3) { found_reverse_match = Opcode_D; goto check_operands_345; } + else if (t->opcode_modifier.commutative) + found_reverse_match = ~0; else if (t->opcode_space != SPACE_BASE + && (t->opcode_space != SPACE_EVEXMAP4 + /* MOVBE, originating from SPACE_0F38, also + belongs here. */ + || t->mnem_off == MN_movbe) && (t->opcode_space != SPACE_0F /* MOV to/from CR/DR/TR, as an exception, follow the base opcode space encoding model. */ || (t->base_opcode | 7) != 0x27)) found_reverse_match = (t->base_opcode & 0xee) != 0x6e ? Opcode_ExtD : Opcode_SIMD_IntD; - else if (!t->opcode_modifier.commutative) - found_reverse_match = Opcode_D; else - found_reverse_match = ~0; + found_reverse_match = Opcode_D; } else { --- a/gas/testsuite/gas/i386/x86-64-apx-ccmp-ctest.d +++ b/gas/testsuite/gas/i386/x86-64-apx-ccmp-ctest.d @@ -77,6 +77,7 @@ Disassembly of section \.text: [ ]*[a-f0-9]+:[ ]*62 54 d4 02 85 bc 80 23 01 00 00[ ]+ctestb \{dfv=of, zf\} %r15,0x123\(%r8,%rax,4\) [ ]*[a-f0-9]+:[ ]*62 54 44 02 85 bc 80 23 01 00 00[ ]+ctestb \{dfv=of\} %r15d,0x123\(%r8,%rax,4\) [ ]*[a-f0-9]+:[ ]*62 54 44 02 84 84 80 23 01 00 00[ ]+ctestb \{dfv=of\} %r8b,0x123\(%r8,%rax,4\) +[ ]*[a-f0-9]+:[ ]*62 54 44 02 84 84 80 23 01 00 00[ ]+ctestb \{dfv=of\} %r8b,0x123\(%r8,%rax,4\) [ ]*[a-f0-9]+:[ ]*62 d4 2c 02 f7 84 80 23 01 00 00 7b 00 00 00[ ]+ctestbl \{dfv=sf, cf\}\s+\$0x7b,0x123\(%r8,%rax,4\) [ ]*[a-f0-9]+:[ ]*62 74 2c 02 85 fa[ ]+ctestb \{dfv=sf, cf\} %r15d,%edx [ ]*[a-f0-9]+:[ ]*62 54 3c 02 85 bc 80 23 01 00 00[ ]+ctestb \{dfv=sf, zf, cf\} %r15d,0x123\(%r8,%rax,4\) @@ -111,7 +112,9 @@ Disassembly of section \.text: [ ]*[a-f0-9]+:[ ]*62 74 04 0a 39 fa[ ]+ccmpt \{dfv=\} %r15d,%edx [ ]*[a-f0-9]+:[ ]*62 fc 84 0a 83 fa 7b[ ]+ccmpt \{dfv=\} \$0x7b,%r18 [ ]*[a-f0-9]+:[ ]*62 fc 04 0a 80 fa 7b[ ]+ccmpt \{dfv=\} \$0x7b,%r18b -[ ]*[a-f0-9]+:[ ]*62 74 04 0a 85 fa[ ]+ctestt \{dfv=\} \%r15d,%edx +[ ]*[a-f0-9]+:[ ]*62 74 04 0a 85 fa[ ]+ctestt \{dfv=\} %r15d,%edx +[ ]*[a-f0-9]+:[ ]*62 d4 04 0a 85 17[ ]+ctestt \{dfv=\} %edx,\(%r15\) +[ ]*[a-f0-9]+:[ ]*62 74 04 0a 85 3a[ ]+ctestt \{dfv=\} %r15d,\(%rdx\) [ ]*[a-f0-9]+:[ ]*62 fc 84 0a f7 c2 7b 00 00 00[ ]+ctestt \{dfv=\} \$0x7b,%r18 [ ]*[a-f0-9]+:[ ]*62 fc 04 0a f6 c2 7b[ ]+ctestt \{dfv=\} \$0x7b,%r18b [ ]*[a-f0-9]+:[ ]*62 d4 8c 02 83 bc 80 23 01 00 00 7b[ ]+ccmpbq \{dfv=cf\}\s+\$0x7b,0x123\(%r8,%rax,4\) --- a/gas/testsuite/gas/i386/x86-64-apx-ccmp-ctest.s +++ b/gas/testsuite/gas/i386/x86-64-apx-ccmp-ctest.s @@ -66,11 +66,12 @@ _start: ctestbl {dfv=of, sf} $0x7b,0x123(%r8,%rax,4) ctestb {dfv=of, sf} %r15w,0x123(%r8,%rax,4) ctestbw {dfv=of, zf, cf} $0x7b,0x123(%r8,%rax,4) - ctestb {dfv=of, zf, cf} %r15w,0x123(%r8,%rax,4) + ctestb {dfv=of, zf, cf} 0x123(%r8,%rax,4),%r15w ctestbb {dfv=of, zf} $0x7b,0x123(%r8,%rax,4) ctestb {dfv=of, zf} %r15,0x123(%r8,%rax,4) ctestb {dfv=of} %r15d,0x123(%r8,%rax,4) ctestb {dfv=of} %r8b,0x123(%r8,%rax,4) + ctestb {dfv=of} 0x123(%r8,%rax,4),%r8b ctestbl {dfv=sf, cf} $0x7b,0x123(%r8,%rax,4) ctestb {dfv=sf, cf} %r15d,%edx ctestb {dfv=sf, zf, cf} %r15d,0x123(%r8,%rax,4) @@ -106,6 +107,8 @@ _start: {evex} cmp $0x7b,%r18 {evex} cmp $0x7b,%r18b {evex} test %r15d,%edx + {evex} test (%r15),%edx + {evex} test %r15d,(%rdx) {evex} test $0x7b,%r18 {evex} test $0x7b,%r18b --- a/gas/testsuite/gas/i386/x86-64-apx-ccmp-ctest-intel.d +++ b/gas/testsuite/gas/i386/x86-64-apx-ccmp-ctest-intel.d @@ -77,6 +77,7 @@ Disassembly of section \.text: [ ]*[a-f0-9]+:[ ]*62 54 d4 02 85 bc 80 23 01 00 00[ ]+ctestb \{dfv=of, zf\} QWORD PTR \[r8\+rax\*4\+0x123\],r15 [ ]*[a-f0-9]+:[ ]*62 54 44 02 85 bc 80 23 01 00 00[ ]+ctestb \{dfv=of\} DWORD PTR \[r8\+rax\*4\+0x123\],r15d [ ]*[a-f0-9]+:[ ]*62 54 44 02 84 84 80 23 01 00 00[ ]+ctestb \{dfv=of\} BYTE PTR \[r8\+rax\*4\+0x123\],r8b +[ ]*[a-f0-9]+:[ ]*62 54 44 02 84 84 80 23 01 00 00[ ]+ctestb \{dfv=of\} BYTE PTR \[r8\+rax\*4\+0x123\],r8b [ ]*[a-f0-9]+:[ ]*62 d4 2c 02 f7 84 80 23 01 00 00 7b 00 00 00[ ]+ctestb \{dfv=sf, cf\} DWORD PTR \[r8\+rax\*4\+0x123\],0x7b [ ]*[a-f0-9]+:[ ]*62 74 2c 02 85 fa[ ]+ctestb \{dfv=sf, cf\} edx,r15d [ ]*[a-f0-9]+:[ ]*62 54 3c 02 85 bc 80 23 01 00 00[ ]+ctestb \{dfv=sf, zf, cf\} DWORD PTR \[r8\+rax\*4\+0x123\],r15d @@ -112,6 +113,8 @@ Disassembly of section \.text: [ ]*[a-f0-9]+:[ ]*62 fc 84 0a 83 fa 7b[ ]+ccmpt \{dfv=\} r18,0x7b [ ]*[a-f0-9]+:[ ]*62 fc 04 0a 80 fa 7b[ ]+ccmpt \{dfv=\} r18b,0x7b [ ]*[a-f0-9]+:[ ]*62 74 04 0a 85 fa[ ]+ctestt \{dfv=\} edx,r15d +[ ]*[a-f0-9]+:[ ]*62 d4 04 0a 85 17[ ]+ctestt \{dfv=\} DWORD PTR \[r15\],edx +[ ]*[a-f0-9]+:[ ]*62 74 04 0a 85 3a[ ]+ctestt \{dfv=\} DWORD PTR \[rdx\],r15d [ ]*[a-f0-9]+:[ ]*62 fc 84 0a f7 c2 7b 00 00 00[ ]+ctestt \{dfv=\} r18,0x7b [ ]*[a-f0-9]+:[ ]*62 fc 04 0a f6 c2 7b[ ]+ctestt \{dfv=\} r18b,0x7b [ ]*[a-f0-9]+:[ ]*62 d4 8c 02 83 bc 80 23 01 00 00 7b[ ]+ccmpb \{dfv=cf\} QWORD PTR \[r8\+rax\*4\+0x123\],0x7b --- a/gas/testsuite/gas/i386/x86-64-pseudos-apx.d +++ b/gas/testsuite/gas/i386/x86-64-pseudos-apx.d @@ -100,6 +100,11 @@ Disassembly of section \.text: [ ]*[a-f0-9]+:[ ]*62 dc 7c 08 29 cf[ ]+subl %ecx,%r31d [ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 2b 39[ ]+subl \(%ecx\),%r31d [ ]*[a-f0-9]+:[ ]*67 62 64 7c 08 29 39[ ]+subl %r31d,\(%ecx\) +[ ]*[a-f0-9]+:[ ]*62 dc 04 0a 85 cf[ ]+ctesttl \{dfv=\} %ecx,%r31d +[ ]*[a-f0-9]+:[ ]*62 64 04 0a 85 f9[ ]+ctesttl \{dfv=\} %r31d,%ecx +[ ]*[a-f0-9]+:[ ]*62 dc 04 0a 85 cf[ ]+ctesttl \{dfv=\} %ecx,%r31d +[ ]*[a-f0-9]+:[ ]*67 62 64 04 0a 85 39[ ]+ctesttl \{dfv=\} %r31d,\(%ecx\) +[ ]*[a-f0-9]+:[ ]*67 62 64 04 0a 85 39[ ]+ctesttl \{dfv=\} %r31d,\(%ecx\) [ ]*[a-f0-9]+:[ ]*62 dc 7c 08 31 cf[ ]+xorl %ecx,%r31d [ ]*[a-f0-9]+:[ ]*62 64 7c 08 33 f9[ ]+xorl.s %ecx,%r31d [ ]*[a-f0-9]+:[ ]*62 dc 7c 08 31 cf[ ]+xorl %ecx,%r31d @@ -164,4 +169,9 @@ Disassembly of section \.text: [ ]*[a-f0-9]+:[ ]*62 f4 7c 0c 42 d0[ ]+cfcmovbl.s %edx,%eax [ ]*[a-f0-9]+:[ ]*67 62 f4 7c 08 42 02[ ]+cfcmovbl \(%edx\),%eax [ ]*[a-f0-9]+:[ ]*67 62 f4 7c 0c 42 02[ ]+cfcmovbl %eax,\(%edx\) +[ ]*[a-f0-9]+:[ ]*62 f4 04 02 85 d0[ ]+ctestbl \{dfv=\} %edx,%eax +[ ]*[a-f0-9]+:[ ]*62 f4 04 02 85 c2[ ]+ctestbl \{dfv=\} %eax,%edx +[ ]*[a-f0-9]+:[ ]*62 f4 04 02 85 d0[ ]+ctestbl \{dfv=\} %edx,%eax +[ ]*[a-f0-9]+:[ ]*67 62 f4 04 02 85 02[ ]+ctestbl \{dfv=\} %eax,\(%edx\) +[ ]*[a-f0-9]+:[ ]*67 62 f4 04 02 85 02[ ]+ctestbl \{dfv=\} %eax,\(%edx\) #pass --- a/gas/testsuite/gas/i386/x86-64-pseudos-apx.s +++ b/gas/testsuite/gas/i386/x86-64-pseudos-apx.s @@ -16,7 +16,7 @@ _start: {store} movaps %xmm2, (%r31) #APX EVEX promoted from legacy - .irp m, adc, add, and, cmp, or, sbb, sub, xor + .irp m, adc, add, and, cmp, or, sbb, sub, test, xor {evex} \m %ecx, %r31d {evex} {load} \m %ecx, %r31d {evex} {store} \m %ecx, %r31d @@ -36,7 +36,7 @@ _start: .endr #APX News. - .irp m, ccmpb, cfcmovb + .irp m, ccmpb, cfcmovb, ctestb \m %edx, %eax {load} \m %edx, %eax {store} \m %edx, %eax