The failure is cause in QEMU function vext_check_store() function
require_align() is invoked.

For the failing instruction the following test is not passed:

/*
 * Vector register should aligned with the passed-in LMUL (EMUL).
 * If LMUL < 0, i.e. fractional LMUL, any vector register is allowed.
 */
static bool require_align(const int8_t val, const int8_t lmul)
{
    return lmul <= 0 || extract32(val, 0, lmul) == 0;
}

I added some debug output for function vext_check_store():

eew = 3 but s->seq = 0.
eew = 3, s->sew = 0, s->lmul = 0
emul = 3 : emul >= -3 && emul <= 3 = 1
require_align(vd = 1, emul = 3) = 0
require_nf(vd = 1, nf = 1, emul = 3) = 1

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2133188

Title:
  Illegal instruction in memset under qemu-user for riscv64

To manage notifications about this bug go to:
https://bugs.launchpad.net/qemu/+bug/2133188/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to