Hi Robin,
> unrelated but I'm seeing a lot of failing gather/scatter tests on > master right now. Are you talking about these FAILs like bellow? If so, If so it should be caused by a recent commit from juzhe who is looking at it. If not, I didn't have these fails in my local run. XPASS: gcc.target/riscv/rvv/autovec/partial/slp-1.c scan-assembler \\tvand XPASS: gcc.target/riscv/rvv/autovec/partial/slp-1.c scan-assembler \\tvand XPASS: gcc.target/riscv/rvv/autovec/partial/slp-1.c scan-assembler \\tvand XPASS: gcc.target/riscv/rvv/autovec/partial/slp-1.c scan-assembler \\tvand > Please add a small comment here which exact situation we're trying > to prevent. OK, will add a comment like bellow: /* Forbidden this case be fused because it change the value of a5. bb 1: vsetvl zero, no_zero_avl ... use a5 ... bb 2: vsetvl a5, zero => bb 1: vsetvl a5, zero ... use a5 ... bb 2: */ > Why is this necessary or rather why is vtype uninitialized? Is > this the mentioned bug? If so, why do we still need it with the > vsetvl fix? This is because running a testcase with spike+pk will result in an ILLEGAL INSTRUCTION error if the vtype registers are not initialized before executing vmv1r.v instruction. This case fails because of this reason, so explicitly execute vsetvl early. We are currently discussing with Kito to constrain this case in psABI and ask the execution environment(pk) to ensure that vtype is initialized, but not so fast. So when encountering a testcase that fails because of this reason, I think use this way to fix it is ok. ------------------ Original ------------------ From: "Robin Dapp" <gcc-patches@gcc.gnu.org>; Date: Thu, Aug 17, 2023 06:05 PM To: "Lehua Ding"<lehua.d...@rivai.ai>;"gcc-patches"<gcc-patches@gcc.gnu.org>; Cc: "rdapp.gcc"<rdapp....@gmail.com>;"juzhe.zhong"<juzhe.zh...@rivai.ai>;"kito.cheng"<kito.ch...@gmail.com>;"palmer"<pal...@rivosinc.com>;"jeffreyalaw"<jeffreya...@gmail.com>; Subject: Re: [PATCH] RISC-V: Forbidden fuse vlmax vsetvl to DEMAND_NONZERO_AVL vsetvl Hi Lehua, unrelated but I'm seeing a lot of failing gather/scatter tests on master right now. > /* DIRTY -> DIRTY or VALID -> DIRTY. */ > + if (block_info.reaching_out.demand_p (DEMAND_NONZERO_AVL) > + && vlmax_avl_p (prop.get_avl ())) > +continue; > vector_insn_info new_info; Please add a small comment here which exact situation we're trying to prevent. > +asm volatile ("vsetivli x0, 0, e8, m1, ta, ma"); Why is this necessary or rather why is vtype uninitialized? Is this the mentioned bug? If so, why do we still need it with the vsetvl fix? Regards Robin