https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123806

            Bug ID: 123806
           Summary: gcc 14/15/16 miscompiles rvv intrinsics at -O1/2/3
           Product: gcc
           Version: 14.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rvismith1115 at gmail dot com
  Target Milestone: ---

gcc 14/15/16 miscompiles rvv intrinsics at -O1/2/3:
> riscv64-unknown-linux-gnu-g++ bug.cpp -O0 -march=rv64gcv_zvfh -mabi=lp64d && 
> $QEMU a.out
5 0
> riscv64-unknown-linux-gnu-g++ bug.cpp -O1 -march=rv64gcv_zvfh -mabi=lp64d && 
> $QEMU a.out
8 18446744073709551613

Code: 

#include <riscv_vector.h>
#include <vector>
int8_t a[5], d[5], c[5], b[5];
int main() {
  for (size_t e = 0, avl = 5; avl > 0;) {
    size_t f = __riscv_vsetvl_e8m1(avl);
    vint8m1_t g = __riscv_vle8_v_i8m1(&a[e], f);
    vint8mf2_t i = __riscv_vle8ff(
        __riscv_vlm_v_b16(std::vector<uint8_t>((f + 7) / 8, 5).data(), f),
        &b[e], &f, f);
    vint8m1_t j = __riscv_vle8_v_i8m1(&c[e], f);
    vint8m1_t k = __riscv_vredxor_tu(g, i, j, f);
    __riscv_vse8_v_i8m1(&d[e], k, f);
    avl -= f;

    __builtin_printf("%lu %lu\n", f, avl);
    break;
  }
}
  • [Bug target/123806] New: gcc 14... rvismith1115 at gmail dot com via Gcc-bugs

Reply via email to