From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 48) id B04FC3858C53; Sat, 7 Oct 2023 22:28:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B04FC3858C53 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1696717702; bh=6lo++P++HqbAUE2BpLKNcmd6nWOvgRQ7jTque3ntJq8=; h=From:To:Subject:Date:From; b=hrfimGw0qiJt+XZSpiEPi08y9Ci4CEhxpw4dC+MwhXjRbF3TY3INB38ZyzVZz/spo z8Hj7JoxTsToozX0mUoMl6laiSnxcirukHxoFh5kAp+c4oElsw/16NOxqT5ggtjF71 7aoDTZz3YcHdf6ZBs/ga8Ls6yO8QQ9Pd+liFfAyE= From: "juzhe.zhong at rivai dot ai" To: gcc-bugs@gcc.gnu.org Subject: [Bug c/111720] New: RISC-V: Ugly codegen in RVV Date: Sat, 07 Oct 2023 22:28:22 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: new X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: gcc X-Bugzilla-Component: c X-Bugzilla-Version: 14.0 X-Bugzilla-Keywords: X-Bugzilla-Severity: normal X-Bugzilla-Who: juzhe.zhong at rivai dot ai 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=3D111720 Bug ID: 111720 Summary: RISC-V: Ugly codegen in RVV Product: gcc Version: 14.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: juzhe.zhong at rivai dot ai Target Milestone: --- Reference: https://godbolt.org/z/YqW7Y5Yve #include vbool8_t fn() { uint8_t arr[32] =3D {1, 2, 7, 1, 3, 4, 5, 3, 1, 0, 1, 2, 4, 4, 9, 9, 1,= 2, 7, 1, 3, 4, 5, 3, 1, 0, 1, 2, 4, 4, 9, 9}; uint8_t m =3D 1; vuint8m1_t varr =3D __riscv_vle8_v_u8m1(arr, 32); vuint8m1_t vand_m =3D __riscv_vand_vx_u8m1(varr, m, 32); vbool8_t vmask =3D __riscv_vreinterpret_v_u8m1_b8(vand_m); return vmask; } GCC asm: fn: lui a5,%hi(.LANCHOR0) addi sp,sp,-32 vsetivli zero,4,e64,m2,ta,ma addi a5,a5,%lo(.LANCHOR0) li a4,32 vle64.v v2,0(a5) vse64.v v2,0(sp) vsetvli zero,a4,e8,m1,ta,ma vle8.v v1,0(sp) vand.vi v1,v1,1 vsetvli a5,zero,e8,m1,ta,ma vsm.v v1,0(a0) addi sp,sp,32 jr ra LLVM ASM: fn: # @fn .Lpcrel_hi0: auipc a0, %pcrel_hi(.L__const.fn.arr) addi a0, a0, %pcrel_lo(.Lpcrel_hi0) li a1, 32 vsetvli zero, a1, e8, m1, ta, ma vle8.v v8, (a0) vand.vi v0, v8, 1 ret .L__const.fn.arr: .ascii=20 "\001\002\007\001\003\004\005\003\001\000\001\002\004\004\t\t\001\002\007\0= 01\003\004\005\003\001\000\001\002\004\004\t\t"=