Skip to content

mips64 / mips64el CI: spurious FPU exception flags under qemu-user #347

Description

@ViralBShah

The mips64 and mips64el entries in .github/workflows/cross.yml are disabled because the in-tree test suite fails under qemu-user on Ubuntu 24.04. Disabled in #346.

Symptom

make test (which runs test/test-float and test/test-double) reports ~1600 failures, all of the form:

```
Failure: yn (1, 1.5) == -0.41230862697391129595: Exception "Invalid operation" set
Failure: yn (1, 2.0) == -0.10703243154093754689: Exception "Divide by zero" set
```

The computed value is correct in each case — the test fails only because the FPU exception flag is unexpectedly set after the call. No numeric disagreement.

Failing run (mips64): https://github.com/JuliaMath/openlibm/actions/runs/27987699090/job/82832967366
Failing run (mips64el): https://github.com/JuliaMath/openlibm/actions/runs/27987699090/job/82832967387

32-bit mips and mipsel pass under the same qemu / toolchain combination, which strongly suggests this is qemu-user mishandling MIPS64 FPU status register semantics rather than an openlibm bug. Possibly related: qemu's softfloat IEEE flag mapping for the n64 ABI.

To investigate

  • Reproduce on bare metal or under qemu-system-mips64 (full-system) and compare flag behavior.
  • Check whether qemu-user >= <some version> fixes it (current pin is Ubuntu 24.04's qemu).
  • If qemu-user is unfixable here, decide whether to keep mips64 CI entirely or run only with exception-flag assertions skipped (the openlibm-test suite has SKIP_FP_EXCEPT_TEST=1; the in-tree suite would need an equivalent knob).

How to re-enable

In .github/workflows/cross.yml, uncomment the two matrix entries:

```yaml

  • { arch: mips64, triple: mips64-linux-gnuabi64 }
  • { arch: mips64el, triple: mips64el-linux-gnuabi64 }
    ```

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions