[PATCH] D100821: [RISCV] Implement the vmmv.m/vmnot.m builtin.
Hsiangkai Wang via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Apr 22 19:51:26 PDT 2021
HsiangKai added a comment.
In D100821#2707667 <https://reviews.llvm.org/D100821#2707667>, @rogfer01 wrote:
> I can reproduce the crash above in my computer, so something is definitely off.
>
> Looks like we emit this
>
> case RISCV::BI__builtin_rvv_vmmv_m_b8:
> case RISCV::BI__builtin_rvv_vmmv_m_b4:
> case RISCV::BI__builtin_rvv_vmmv_m_b2:
> case RISCV::BI__builtin_rvv_vmmv_m_b1:
> case RISCV::BI__builtin_rvv_vmmv_m_b16:
> case RISCV::BI__builtin_rvv_vmmv_m_b32:
> case RISCV::BI__builtin_rvv_vmmv_m_b64:
> case RISCV::BI__builtin_rvv_vmand_mm_b8:
> case RISCV::BI__builtin_rvv_vmand_mm_b4:
> case RISCV::BI__builtin_rvv_vmand_mm_b2:
> case RISCV::BI__builtin_rvv_vmand_mm_b1:
> case RISCV::BI__builtin_rvv_vmand_mm_b16:
> case RISCV::BI__builtin_rvv_vmand_mm_b32:
> case RISCV::BI__builtin_rvv_vmand_mm_b64:
> ID = Intrinsic::riscv_vmand;
> IntrinsicTypes = {ResultType, Ops[2]->getType()};
> break;
>
> But `Ops` has size 2 so this is accessing past the end. I observed the crash with `clang::RISCV::BI__builtin_rvv_vmmv_m_b1` but I assume it happens with the other ones as well.
>
> I think the description of the builtin should be `def : RVVBuiltin<"m", "m", type_range>;` as these are like unary operations, aren't they?
The fix is put in https://reviews.llvm.org/D100819#inline-952584. I will land D100819 <https://reviews.llvm.org/D100819> today.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D100821/new/
https://reviews.llvm.org/D100821
More information about the cfe-commits
mailing list