From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id 2boYCeUFTWpSDisAWB0awg (envelope-from ) for ; Tue, 07 Jul 2026 09:57:57 -0400 Authentication-Results: simark.ca; dkim=pass (1024-bit key; unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=KnkiLjKz; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id 150171E024; Tue, 07 Jul 2026 09:57:57 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-6.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [IPv6:2620:52:6:3111::32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id EB4E91E024 for ; Tue, 07 Jul 2026 09:57:55 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7E10E4BA23C5 for ; Tue, 7 Jul 2026 13:57:54 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7E10E4BA23C5 Authentication-Results: sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=KnkiLjKz Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTP id 63BFE4BA2E1E for ; Tue, 7 Jul 2026 13:57:28 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 63BFE4BA2E1E Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 63BFE4BA2E1E Authentication-Results: sourceware.org; arc=none smtp.remote-ip=170.10.133.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783432648; cv=none; b=iqAiwmsk05s265D7kFLjDDfoiuIkZNz7jfEAvrgb7ybgy7jlD9ah/G/ViBegki8aq/xnAL9QYQYR5MlW96P4/54Ql5LRXYIlRCJHl4mxmoSJ6muKmi+A4K/fWk0znu3ruN00DyWX5EiLMPHOuchH3sj+e65apNtVaEW6AJU0Cxs= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783432648; c=relaxed/simple; bh=/8Pox06aCAjclQtIBWN004f3OJZsG140idGxlMPMw4k=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=dtPtEjAkhxS9SbtTX8VyMt9WAH/Hd4hmYUG+JtezKPsALz3/dtxlmPTzBofzvFQlk5c4ji17tvx71D1g+fzuDErysvQUJKSFzJLl7WVO5afAy/tUwtsgrFy7RxxPSuByjJ4W3ylkCX5orslE77ywspHK8SyI/EkVajbcEDQgcMU= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (1024-bit key, unprotected) header.d=redhat.com header.i=@redhat.com header.a=rsa-sha256 header.s=mimecast20190719 header.b=KnkiLjKz DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 63BFE4BA2E1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1783432648; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=MJ86rFkr71R3tUTZyM4be8S38CJgtcUJHa6NM1dc0fI=; b=KnkiLjKzuwVp1HrY1+87B6VlRoKpZ/uBoQcKLG4HvTlxz49m7sjkAMnBus3vEXwzRJ6oC1 G+d1dcZUSSAKWhwnKdHVYcbeIBRhIt6g1FW2MzlgulWpUEC1HW+9Cuammg9oZSAEa5reb0 1pI18+/D7RXUxBBNXBzHhEKo+w2PMzU= Received: from mail-pg1-f197.google.com (mail-pg1-f197.google.com [209.85.215.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-528-ElFA86g4N6-oTlTG2Mf-Qw-1; Tue, 07 Jul 2026 09:57:26 -0400 X-MC-Unique: ElFA86g4N6-oTlTG2Mf-Qw-1 X-Mimecast-MFC-AGG-ID: ElFA86g4N6-oTlTG2Mf-Qw_1783432645 Received: by mail-pg1-f197.google.com with SMTP id 41be03b00d2f7-c9aa197d5easo951732a12.1 for ; Tue, 07 Jul 2026 06:57:25 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783432645; x=1784037445; h=content-transfer-encoding:in-reply-to:from:content-language :references:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=MJ86rFkr71R3tUTZyM4be8S38CJgtcUJHa6NM1dc0fI=; b=qSECVdhe7J9m/NUjihlgEuyWMvAH8SeuhO2+GJupyq4KOuj9ey8hqRKNtKgE7+Om1t IU6UxbYDG8SAYh8HpecwCZW93qCdEYcvrWM71OrjTmxNZC/MSkp4LT6H3TVcCouP/xHA 0BLfVSQ7X4Si3KRd2n5zmpAgLo3RrzCc26TtZ3tCdB+YFtbdVn255Xm/XYE+tr/TXU9X P2Aa5ann73pAqfWpMPLu6xSEABMQPtL1a3At20065XPS1Jn4rfoFAQcP3ou8qxm+92EX 8yJUyibGfXhBeaCrGQK2Mv6yS+t0XSe6Bz0LTYErCsnj0NMnmyB23Mbmp5qwJ90d0WSG 2hTw== X-Forwarded-Encrypted: i=1; AHgh+Rqh8Udh6/GKMglYwIKxzA0ow3lm6g6JUkJ3pov7xK0fgN1BI7HAqNTvANvTpBasDQgIpNdRVzY7UeIMkA==@sourceware.org X-Gm-Message-State: AOJu0Yw7QYgTG1n7+V4L+rIq3FGpxjsfYWK72v5kdk7pJzH1YxsblCka Snvx8ZbgV+lZ4OGUAcGkmdAVH7ghNP7vYtmWR3y+xyPsxeHjHEpEuBHtOa0KcLlOMFoP/AVRctu sA6LsgHw00mVIqJ7loQOLj2uE+8SpVnfXJ4vZuKjqlTPQig8sPNuMIBEA3IEILbk= X-Gm-Gg: AfdE7clDeGOcv8owRXz2lAlyC1Z5DpgdaztZQM3k0COGWo082cq7E6Gameb0OprZ/xC p46sK/EWRLTIiYq2yXHHYmv9b+w676Q4wh/cQFw0sxAjt4aZx7P6UtSrMCdFq+k4foaL/rydvX+ wujwb6qg/b65g+x5eBfEoaNUaouAdO99wRwV1Qb8NR6Lgka1OVki3xfTPfDEwX2q37CX0pzFFJo Sx40CHRr/GIBKizzzKnpqm98+K1Y3049rZDf2NLAMwbRiukk3catlJPRVm2J6NVcA5ZafkHH1Do uAgcPLo3F89EPDE9ZrYELTvPtCkRT0eOMf2WFG5w9OJycMCrqCz1gwf0mUdviw2T4qOiF5NzrE4 MgLzQRKYHnfIjzljSz4+q X-Received: by 2002:a05:6a20:72a0:b0:3b3:6db1:5986 with SMTP id adf61e73a8af0-3c09b3f2799mr3758483637.30.1783432644449; Tue, 07 Jul 2026 06:57:24 -0700 (PDT) X-Received: by 2002:a05:6a20:72a0:b0:3b3:6db1:5986 with SMTP id adf61e73a8af0-3c09b3f2799mr3758441637.30.1783432643735; Tue, 07 Jul 2026 06:57:23 -0700 (PDT) Received: from ?IPV6:2804:14d:8084:993e::75d? ([2804:14d:8084:993e::75d]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-13b659fa13bsm8405232c88.15.2026.07.07.06.57.21 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Tue, 07 Jul 2026 06:57:23 -0700 (PDT) Message-ID: Date: Tue, 7 Jul 2026 10:57:19 -0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/2] gdb/record: add support for BMI2 instructions To: "Schimpe, Christina" , "gdb-patches@sourceware.org" References: <20260617124201.15794-1-guinevere@redhat.com> <20260617140058.20727-2-guinevere@redhat.com> <20260617140058.20727-3-guinevere@redhat.com> <70b4fa57-d4c5-4c8c-95b0-0db51fe586ef@redhat.com> From: Guinevere Larsen In-Reply-To: X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: LvjQSSVX1XBXOA93rtrEJf1TAS7zw_a6yO_bKBOQhtY_1783432645 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org On 7/7/26 6:18 AM, Schimpe, Christina wrote: > Hi Guinevere, > > If I run this on an Intel cpu I see the following. > > ~~~ > Running /tmp/gdb.reverse/i386-avx-reverse.exp ... > FAIL: gdb.reverse/i386-avx-reverse.exp: verify r8 before bzhi > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ecx before shrx > FAIL: gdb.reverse/i386-avx-reverse.exp: verify eax before sarx > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ebx before rorx > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ebx before pdep > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ecx before mulx > FAIL: gdb.reverse/i386-avx-reverse.exp: verify r8 before tzcnt > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ebx before tzcnt > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ecx before tzcnt > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ecx before blsr > FAIL: gdb.reverse/i386-avx-reverse.exp: verify eax before blsmsk > FAIL: gdb.reverse/i386-avx-reverse.exp: verify ecx before blsi > FAIL: gdb.reverse/i386-avx-reverse.exp: verify eax before bextr > ~~~ > > Log: > ~~~ > ecx 0xfb27ea2f -81270225^M > (gdb) FAIL: gdb.reverse/i386-avx-reverse.exp: verify ecx before shrx > reverse-step^M > 810 asm volatile ("shlx %eax, %ecx, %ebx");^M > (gdb) PASS: gdb.reverse/i386-avx-reverse.exp: reverse-step from shlx to test register ebx > info register ebx^M > ebx 0x0 0^M > (gdb) PASS: gdb.reverse/i386-avx-reverse.exp: verify ebx before shlx > reverse-step^M > 809 asm volatile ("sarx %edx, %ebx, %eax");^M > (gdb) PASS: gdb.reverse/i386-avx-reverse.exp: reverse-step from sarx to test register eax > info register eax^M > eax 0xffffffff -1^M > (gdb) FAIL: gdb.reverse/i386-avx-reverse.exp: verify eax before sarx > reverse-step^M > 808 asm volatile ("rorx $10, %r8, %rbx");^M > (gdb) PASS: gdb.reverse/i386-avx-reverse.exp: reverse-step from rorx to test register ebx > info register ebx^M > ebx 0xd7 215^M > (gdb) FAIL: gdb.reverse/i386-avx-reverse.exp: verify ebx before rorx > [...] > ~~~ > > If I revert the commits > - "gdb/record: add support for BMI2 instructions" > - "gdb/record: Add support for recording BMI1 instructions" > the fails disappear. Well, they disappear because this commit is where those tests were introduced. This works fine inmy AMD machine, so the question is, is this an issue of recording or a difference in how the instructions work? Could you run this function forward, setting the registers manually, and check if the test expects the right values in the registers? > > I'd have given this a review (especially the x86 part) but didn't see this soon enough > since I've been out for a couple of weeks. > > For now, I just run the test. > > Christina > >> -----Original Message----- >> From: Guinevere Larsen >> Sent: Freitag, 3. Juli 2026 20:22 >> To: gdb-patches@sourceware.org >> Subject: Re: [PATCH 2/2] gdb/record: add support for BMI2 instructions >> >> I'm pushing this series with a trivial change to the test, fixing an oversight I had >> when writing the original patch >> >> On 6/17/26 11:00 AM, Guinevere Larsen wrote: >>> This commit adds support for recording all instructions in the Bit >>> Manipulation Instruction set 2, for x86 cpus. The specific >>> instructions >>> are: >>> >>> * mulx >>> * pdep >>> * pext >>> * rorx >>> * sarx >>> * sh[r|l]x >>> * bzhi >>> >>> And adds them to the AVX test, for the same reason as the previous >>> commit. >>> --- >>> gdb/i386-tdep.c | 18 ++++++++++++++++-- >>> gdb/testsuite/gdb.reverse/i386-avx-reverse.c | 13 +++++++++++++ >>> gdb/testsuite/gdb.reverse/i386-avx-reverse.exp | 14 ++++++++++++++ >>> 3 files changed, 43 insertions(+), 2 deletions(-) >>> >>> diff --git a/gdb/i386-tdep.c b/gdb/i386-tdep.c index >>> 8b4dfb43f61..189a711fd81 100644 >>> --- a/gdb/i386-tdep.c >>> +++ b/gdb/i386-tdep.c >>> @@ -5128,7 +5128,7 @@ i386_record_vex (struct i386_record_s *ir, >> uint8_t vex_w, uint8_t vex_r, >>> case 0xf2: /* VPSLLD, dynamic shift and ANDN. */ >>> case 0xf3: /* VPSLLQ, dynamic shift and BLSI, BLSR and BLSMSK. */ >>> case 0xf4: /* VPMULUDQ */ >>> - case 0xf6: /* VPSADBW. */ >>> + case 0xf6: /* VPSADBW or MULX. */ >>> case 0xfc: /* VPADDB */ >>> case 0xfd: /* VPADDW */ >>> case 0xfe: /* VPADDD */ >>> @@ -5152,6 +5152,15 @@ i386_record_vex (struct i386_record_s *ir, >> uint8_t vex_w, uint8_t vex_r, >>> record_full_arch_list_add_reg >>> (ir->regcache, ir->regmap[X86_RECORD_EFLAGS_REGNUM]); >>> } >>> + else if (opcode == 0xf6 && ir->map_select == 2) >>> + { >>> + record_full_arch_list_add_reg (ir->regcache, >>> + ir- >>> regmap[X86_RECORD_REAX_REGNUM >>> + + ir->vvvv]); >>> + record_full_arch_list_add_reg (ir->regcache, >>> + ir- >>> regmap[X86_RECORD_REAX_REGNUM >>> + + reg_offset]); >>> + } >>> else >>> { >>> /* This set of instructions all share the same exact way to @@ >>> -5164,11 +5173,16 @@ i386_record_vex (struct i386_record_s *ir, uint8_t >> vex_w, uint8_t vex_r, >>> } >>> break; >>> >>> - case 0xf7: /* BEXTR. */ >>> + case 0xf0: /* RORX. */ >>> + case 0xf5: /* PDEP or PEXT or BZHI. */ >>> + case 0xf7: /* BEXTR or SARX or SHLX or SHRX. */ >>> i386_record_modrm (ir); >>> record_full_arch_list_add_reg (ir->regcache, >>> ir->regmap[X86_RECORD_REAX_REGNUM >>> + ir->reg + vex_r * 8]); >>> + if (opcode == 0xf5 && ir->pp == 0) >>> + record_full_arch_list_add_reg (ir->regcache, >>> + ir- >>> regmap[X86_RECORD_EFLAGS_REGNUM]); >>> break; >>> >>> case 0x2e: /* VUCOMIS[S|D]. */ >>> diff --git a/gdb/testsuite/gdb.reverse/i386-avx-reverse.c >>> b/gdb/testsuite/gdb.reverse/i386-avx-reverse.c >>> index 190bc6f4a7a..4e4428f695a 100644 >>> --- a/gdb/testsuite/gdb.reverse/i386-avx-reverse.c >>> +++ b/gdb/testsuite/gdb.reverse/i386-avx-reverse.c >>> @@ -799,6 +799,19 @@ bmi_test () >>> asm volatile ("tzcnt %eax, %ebx"); >>> asm volatile ("tzcnt %ax, %r8w"); >>> >>> + asm volatile ("mulx %eax, %ebx, %ecx"); asm volatile ("mulx %ebx, >>> + %ecx, %ebx"); >>> + >>> + asm volatile ("pdep %r8, %rcx, %rbx"); asm volatile ("pext %edx, >>> + %ecx, %ebx"); asm volatile ("rorx $10, %r8, %rbx"); asm volatile >>> + ("sarx %edx, %ebx, %eax"); asm volatile ("shlx %eax, %ecx, %ebx"); >>> + asm volatile ("shrx %r8d, %eax, %ecx"); >>> + >>> + asm volatile ("bzhi %edx, %ebx, %r8d"); asm volatile ("bzhi %rax, >>> + %rcx, %r8"); >>> + >>> return 0; /* end bmi_test */ >>> } >>> >>> diff --git a/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp >>> b/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp >>> index e1780267ad0..a482142edde 100644 >>> --- a/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp >>> +++ b/gdb/testsuite/gdb.reverse/i386-avx-reverse.exp >>> @@ -1206,9 +1206,23 @@ gdb_test_no_output \ >>> "set \$eax = 0x1312" "set eax for bmi test" >>> gdb_test_no_output "set \$ebx = 0xdeadbeef" "set ebx for bmi test" >>> gdb_test_no_output "set \$ecx = 0xcafeface" "set ecx for bmi test" >>> +gdb_test_no_output "set \$edx = 0x2337" "set edx for bmi test" >>> >>> if {[record_full_function "bmi"] == true} { >>> >>> + test_one_general_register "bzhi" "r8" "0xe884173" >>> + test_one_general_register "bzhi" "r8" "0x0" >>> + >>> + test_one_general_register "shrx" "ecx" "0x0" >> This was updated to look for 0xe884173 >> >> -- >> Cheers, >> Guinevere Larsen >> it/its >> she/her (deprecated) >> >>> + test_one_general_register "shlx" "ebx" "0x0" >>> + test_one_general_register "sarx" "eax" "0x3" >>> + test_one_general_register "rorx" "ebx" "0x3b" >>> + test_one_general_register "pext" "ebx" "0x0" >>> + test_one_general_register "pdep" "ebx" "0x0" >>> + >>> + test_one_general_register "mulx" "ecx" "0x0" >>> + test_one_general_register "mulx" "ebx" "0x0" >>> + >>> test_one_general_register "tzcnt" "r8" "0x3e" >>> test_one_general_register "tzcnt" "ebx" "0xe" >>> test_one_general_register "tzcnt" "ecx" "0x1e" > Intel Deutschland GmbH > > Registered Address: Dornacher Strasse 1, 85622 Feldkirchen, Germany > Tel: +49 89 991 430, www.intel.de > Managing Directors: Harry Demas, Jeffrey Schneiderman, Yin Chong Sorrell > Chairperson of the Supervisory Board: Nicole Lau > Registered Seat: Munich > Commercial Register: Amtsgericht Muenchen HRB 186928 > -- Cheers, Guinevere Larsen it/its she/her (deprecated)