From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id 124763858D20; Thu, 28 Mar 2024 10:29:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 124763858D20 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1711621755; bh=MT4+YHs6qChR5GmJG0A6QutGJ8CGaOGEgpwxeG5XqIo=; h=From:To:Subject:Date:From; b=R6dliJR8MnsZNCzIauN6fWgqb1VdTx2zazsTiDFTWh17aK2kaTC9LqAKOY1FydJq/ 0BBIxybaQbebIq5sr/GgKfdawWo/ikMHnxfCX9Fxq9MRdYZp4kBPw7rQxyZX9DT9B3 Hy+Zt2xMTejcOG1P0vVlzF4UMwv2x5otPF2hVe7Q= From: "deminhan at gcc dot gnu.org" To: gcc-bugs@gcc.gnu.org Subject: [Bug target/114516] New: RISC-V: TSVC2 s315 has spill with dynamic lmul Date: Thu, 28 Mar 2024 10:29:14 +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: unknown X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: deminhan 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 target_milestone 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=3D114516 Bug ID: 114516 Summary: RISC-V: TSVC2 s315 has spill with dynamic lmul Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: deminhan at gcc dot gnu.org Target Milestone: --- -march=3Drv64gcv_zba_zbb -mabi=3Dlp64d -mrvv-max-lmul=3Ddynamic -O3 typedef float real_t; __attribute__((aligned(64))) real_t a[32000]; real_t s315() { for (int i =3D 0; i < 32000; i++) a[i] =3D (i * 7) % 32000; real_t x, chksum; int index; for (int nl =3D 0; nl < 256; nl++) { x =3D a[0]; index =3D 0; for (int i =3D 0; i < 32000; ++i) { if (a[i] > x) { x =3D a[i]; index =3D i; } } chksum =3D x + (real_t) index; } return index + x + 1; } M8 is selected and has register spill. .LFB0: .cfi_startproc li a2,274878464 vsetvli a1,zero,e32,m8,ta,ma addiw a2,a2,-557 vmv.v.x v8,a2 csrr t0,vlenb slli t1,t0,3 li a4,32768 addiw a4,a4,-768 sub sp,sp,t1 .cfi_escape 0xf,0x9,0x72,0,0x92,0xa2,0x38,0,0x40,0x1e,0x22 vs8r.v v8,0(sp) vmv.v.x v8,a4 li a3,32768 lui a4,%hi(a) vmv8r.v v0,v8 vid.v v16 addi a6,a4,%lo(a) addi a3,a3,-768 addi a4,a4,%lo(a) .L2: vsetvli a5,a3,e8,m2,ta,ma vsetvli a2,zero,e32,m8,ta,ma vmv.v.i v8,7 vsetvli zero,a5,e32,m8,ta,ma sub a3,a3,a5 vmul.vv v24,v16,v8 vl8re32.v v8,0(sp) vmulh.vv v8,v24,v8 vsra.vi v8,v8,11 vnmsub.vv v8,v0,v24 vsetvli a2,zero,e32,m8,ta,ma vmv.v.x v24,a5 vsetvli zero,a5,e32,m8,ta,ma vfcvt.f.x.v v8,v8 vsetvli a2,zero,e32,m8,ta,ma vadd.vv v16,v16,v24 vsetvli zero,a5,e32,m8,ta,ma vse32.v v8,0(a4) sh2add a4,a5,a4 bne a3,zero,.L2 flw fa3,0(a6) li a3,32768 addi a3,a3,-768 li a0,256=