From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 1D9533858CDA; Mon, 17 Jun 2024 08:05:01 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 1D9533858CDA DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1718611502; bh=QMO/H4OTNJ4dkYDqlqnZtn3nzBtNx3rkNsGaqM6Egv8=; h=From:To:Subject:Date:From; b=tAlvy87829Y7+XxdOVcIT1/+XI5/l6tkN2gHZCNz5XEuSAinItAt4QljPQuxdKrCQ 7mTAC7OA/MaGp20ZMumNfch9rDZ8WEVkWpbxMn3iPG7bA9fVqf3ng0qfuETSRytHin KD3dZxFLC0WIe1qlESuG52/qMPik5lCOCGMe+PSA= From: "liuhongt at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/115517] New: Fix regression after dropping uses of vcond{,u,eq}_optab Date: Mon, 17 Jun 2024 08:05:00 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: target X-Bugzilla-Version: 15.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: liuhongt at gcc dot gnu.org X-Bugzilla-Status: UNCONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: P3 X-Bugzilla-Assigned-To: unassigned at gcc dot gnu.org X-Bugzilla-Target-Milestone: --- X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: bug_id short_desc product version bug_status bug_severity priority component assigned_to reporter dependson target_milestone cf_gcctarget Message-ID: Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Bugzilla-URL: http://gcc.gnu.org/bugzilla/ Auto-Submitted: auto-generated MIME-Version: 1.0 List-Id: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D115517 Bug ID: 115517 Summary: Fix regression after dropping uses of vcond{,u,eq}_optab Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: liuhongt at gcc dot gnu.org Depends on: 114189 Target Milestone: --- Target: x86_64-*-* i?86-*-* > I'd appreciate testing, I do not expect fallout for x86 or arm/aarch64. > > I know riscv doesn't implement any of the legacy optabs. But less > > maintained vector targets might need adjustments. > > > At GCC14, I tried to remove these expanders in the x86 backend, and it > regressed some testcases, mainly because of the optimizations we did > in ix86_expand_{int,fp}_vcond. > I've started testing your patch, it's possible that we still need to > move the ix86_expand_{int,fp}_vcond optimizations to the > middle-end(isel or match.pd)or add extra patterns to handle it at the > rtl pas_combine. These are new failures I got g++: g++.target/i386/avx-pr54700-1.C scan-assembler-not vpcmpgt[bdq] g++: g++.target/i386/avx-pr54700-1.C scan-assembler-times vblendvpd 4 g++: g++.target/i386/avx-pr54700-1.C scan-assembler-times vblendvps 4 g++: g++.target/i386/avx-pr54700-1.C scan-assembler-times vpblendvb 2 g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-not vpcmpgt[bdq] g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-times vblendvpd 4 g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-times vblendvps 4 g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-times vpblendvb 2 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++14 g++scan-assembler-times vmaxph 3 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++14 g++scan-assembler-times vminph 3 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++17 g++scan-assembler-times vmaxph 3 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++17 g++scan-assembler-times vminph 3 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++20 g++scan-assembler-times vmaxph 3 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++20 g++scan-assembler-times vminph 3 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++98 g++scan-assembler-times vmaxph 3 g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++98 g++scan-assembler-times vminph 3 g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++14 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++17 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++20 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++98 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++14 scan-assembler-times g++pcmpeqw 2 g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++17 scan-assembler-times g++pcmpeqw 2 g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++20 scan-assembler-times g++pcmpeqw 2 g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++98 scan-assembler-times g++pcmpeqw 2 g++: g++.target/i386/pr100738-1.C -std=3Dgnu++14 scan-assembler-not g++vpcmpeqd[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++14 scan-assembler-not g++vpxor[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++14 scan-assembler-times g++vblendvps[ \\t] 2 g++: g++.target/i386/pr100738-1.C -std=3Dgnu++17 scan-assembler-not g++vpcmpeqd[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++17 scan-assembler-not g++vpxor[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++17 scan-assembler-times g++vblendvps[ \\t] 2 g++: g++.target/i386/pr100738-1.C -std=3Dgnu++20 scan-assembler-not g++vpcmpeqd[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++20 scan-assembler-not g++vpxor[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++20 scan-assembler-times g++vblendvps[ \\t] 2 g++: g++.target/i386/pr100738-1.C -std=3Dgnu++98 scan-assembler-not g++vpcmpeqd[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++98 scan-assembler-not g++vpxor[ \\t] g++: g++.target/i386/pr100738-1.C -std=3Dgnu++98 scan-assembler-times g++vblendvps[ \\t] 2 g++: g++.target/i386/pr103861-1.C -std=3Dgnu++14 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr103861-1.C -std=3Dgnu++17 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr103861-1.C -std=3Dgnu++20 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr103861-1.C -std=3Dgnu++98 scan-assembler-times g++pcmpeqb 2 g++: g++.target/i386/pr61747.C -std=3Dgnu++14 scan-assembler-times max 4 g++: g++.target/i386/pr61747.C -std=3Dgnu++14 scan-assembler-times min 4 g++: g++.target/i386/pr61747.C -std=3Dgnu++17 scan-assembler-times max 4 g++: g++.target/i386/pr61747.C -std=3Dgnu++17 scan-assembler-times min 4 g++: g++.target/i386/pr61747.C -std=3Dgnu++20 scan-assembler-times max 4 g++: g++.target/i386/pr61747.C -std=3Dgnu++20 scan-assembler-times min 4 g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-not pcmpgt[bdq] g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-times blendvpd 4 g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-times blendvps 4 g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-times pblendvb 2 gcc: gcc.target/i386/avx2-pr99908.c scan-assembler-not \tvpcmpeq gcc: gcc.target/i386/avx512bw-pr96891-1.c scan-assembler-not %k[0-7] gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-not %k[0-9] gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsb[\t ]= 2 gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsd[\t ]= 2 gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsq[\t ]= 2 gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsw[\t ]= 2 gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminub[\t ]= 2 gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminud[\t ]= 2 gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminuq[\t ]= 2 gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminuw[\t ]= 2 gcc: gcc.target/i386/blendv-3.c scan-assembler-not vpcmp gcc: gcc.target/i386/pr88540.c scan-assembler minpd gcc: gcc.target/i386/sse4_1-pr99908.c scan-assembler-not \tpcmpeq unix/-m32: g++: g++.target/i386/avx-pr54700-1.C scan-assembler-not vpcmpgt[bdq] unix/-m32: g++: g++.target/i386/avx-pr54700-1.C scan-assembler-times vblendvpd 4 unix/-m32: g++: g++.target/i386/avx-pr54700-1.C scan-assembler-times vblendvps 4 unix/-m32: g++: g++.target/i386/avx-pr54700-1.C scan-assembler-times vpblendvb 2 unix/-m32: g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-not vpcmpgt[bdq] unix/-m32: g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-times vblendvpd 4 unix/-m32: g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-times vblendvps 4 unix/-m32: g++: g++.target/i386/avx2-pr54700-1.C scan-assembler-times vpblendvb 2 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++14 scan-assembler-times vmaxph 3 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++14 scan-assembler-times vminph 3 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++17 scan-assembler-times vmaxph 3 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++17 scan-assembler-times vminph 3 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++20 scan-assembler-times vmaxph 3 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++20 scan-assembler-times vminph 3 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++98 scan-assembler-times vmaxph 3 unix/-m32: g++: g++.target/i386/avx512fp16-vcondmn-minmax.C -std=3Dgnu++98 scan-assembler-times vminph 3 unix/-m32: g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++14 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++17 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++20 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr100637-1b.C -std=3Dgnu++98 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++14 scan-assembler-times pcmpeqw 2 unix/-m32: g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++17 scan-assembler-times pcmpeqw 2 unix/-m32: g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++20 scan-assembler-times pcmpeqw 2 unix/-m32: g++: g++.target/i386/pr100637-1w.C -std=3Dgnu++98 scan-assembler-times pcmpeqw 2 unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++14 scan-assembler-not vpcmpeqd[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++14 scan-assembler-not vpxor[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++14 scan-assembler-times vblendvps[ \\t] 2 unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++17 scan-assembler-not vpcmpeqd[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++17 scan-assembler-not vpxor[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++17 scan-assembler-times vblendvps[ \\t] 2 unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++20 scan-assembler-not vpcmpeqd[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++20 scan-assembler-not vpxor[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++20 scan-assembler-times vblendvps[ \\t] 2 unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++98 scan-assembler-not vpcmpeqd[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++98 scan-assembler-not vpxor[ \\t] unix/-m32: g++: g++.target/i386/pr100738-1.C -std=3Dgnu++98 scan-assembler-times vblendvps[ \\t] 2 unix/-m32: g++: g++.target/i386/pr103861-1.C -std=3Dgnu++14 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr103861-1.C -std=3Dgnu++17 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr103861-1.C -std=3Dgnu++20 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr103861-1.C -std=3Dgnu++98 scan-assembler-times pcmpeqb 2 unix/-m32: g++: g++.target/i386/pr61747.C -std=3Dgnu++14 scan-assembler-times max 4 unix/-m32: g++: g++.target/i386/pr61747.C -std=3Dgnu++14 scan-assembler-times min 4 unix/-m32: g++: g++.target/i386/pr61747.C -std=3Dgnu++17 scan-assembler-times max 4 unix/-m32: g++: g++.target/i386/pr61747.C -std=3Dgnu++17 scan-assembler-times min 4 unix/-m32: g++: g++.target/i386/pr61747.C -std=3Dgnu++20 scan-assembler-times max 4 unix/-m32: g++: g++.target/i386/pr61747.C -std=3Dgnu++20 scan-assembler-times min 4 unix/-m32: g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-not pcmpgt[bdq] unix/-m32: g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-times blendvpd 4 unix/-m32: g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-times blendvps 4 unix/-m32: g++: g++.target/i386/sse4_1-pr54700-1.C scan-assembler-times pblendvb 2 unix/-m32: gcc: gcc.target/i386/avx2-pr99908.c scan-assembler-not \tvpcmpeq unix/-m32: gcc: gcc.target/i386/avx512bw-pr96891-1.c scan-assembler-not %k[= 0-7] unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-not %k[= 0-9] unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsb[\t ] 2 unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsd[\t ] 2 unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsq[\t ] 2 unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminsw[\t ] 2 unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminub[\t ] 2 unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminud[\t ] 2 unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminuq[\t ] 2 unix/-m32: gcc: gcc.target/i386/avx512vl-pr88547-1.c scan-assembler-times vpminuw[\t ] 2 unix/-m32: gcc: gcc.target/i386/blendv-3.c scan-assembler-not vpcmp unix/-m32: gcc: gcc.target/i386/pr88540.c scan-assembler minpd unix/-m32: gcc: gcc.target/i386/sse4_1-pr99908.c scan-assembler-not \tpcmpeq Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=3D114189 [Bug 114189] Target implements obsolete vcond{,u,eq} expanders=