Skip to content
  1. Feb 06, 2025
  2. Jan 31, 2025
    • mmc28a's avatar
      Add support for DC ZVA (#127) · 89bd929e
      mmc28a authored
      The DC ZVA instruction allows zeroing areas of memory, typically at block sizes
      of 64 bytes per instance. Add support for this in all components, with tests.
      89bd929e
  3. Jan 29, 2025
  4. Jan 24, 2025
  5. Jan 23, 2025
    • Jacob Bramley's avatar
      Make MOPS tests tolerant of implementation options. · aca39bdd
      Jacob Bramley authored
      Most MOPS sequences implement one of options "A" or "B", with slightly
      different flags in each case. Some `cpy` sequences also permit either
      forward or backward iteration, with different register results.
      
      This relies on a new overloaded form of `Equal64` that checks that a
      register matches any one of the listed reference values.
      
      In addition, renumber registers to avoid the use of `x16` in a couple of
      tests, because this is a MacroAssembler scratch register and could cause
      issues in the future.
      aca39bdd
  6. Jan 22, 2025
  7. Jan 17, 2025
    • mmc28a's avatar
      Restrict some multiply instructions element sizes (#121) · d17400fd
      mmc28a authored
      Some Neon instructions such as sqrdmulh only operate on H and S-sized elements.
      The disassembler already restricts this, so extend checks to the simulator.
      Additionally, reuse the new register/index extraction function in other parts of
      the simulator.
      d17400fd
  8. Jan 15, 2025
    • mmc28a's avatar
      Fix backward branch veneers (#120) · ed687ad2
      mmc28a authored
      Veneers were applied to backward branches too early, using only a quarter of the
      range available for the branch. This was caused by confusion over the units the
      range function expects; it accepts an offset in instructions.
      
      Correct this and test veneers are applied only beyond the limit of the branch
      range.
      ed687ad2
    • mmc28a's avatar
      Update code coverage and formatting (#119) · 16e66475
      mmc28a authored
      16e66475
  9. Jan 13, 2025
  10. Jan 08, 2025
  11. Nov 14, 2024
  12. Oct 15, 2024
  13. Sep 03, 2024
    • mmc28a's avatar
      Improve irg test (#112) · 95cb2f5d
      mmc28a authored
      Extend MTE irg test to check that all tags expected have been allocated.
      Previously, the test wasn't detecting a case where the upper half of the range
      was still unallocated.
      95cb2f5d
  14. Aug 21, 2024
    • mmc28a's avatar
      Refactor fcvt tests (#111) · 4474f589
      mmc28a authored
      Refactor assembler tests for fcvt by providing a helper function, extracting the
      common cases, and moving the remainder to clearer input versus expected result
      comparisons.
      4474f589
  15. Aug 15, 2024
  16. Aug 14, 2024
  17. Jul 24, 2024
  18. Jul 18, 2024
  19. Jul 04, 2024
  20. Jun 25, 2024
  21. Jun 20, 2024
  22. Jun 19, 2024
  23. Jun 18, 2024
  24. Jun 05, 2024
  25. May 28, 2024
    • mmc28a's avatar
      Fix zeroing part of SVE register for Neon instructions (#97) · 5e267967
      mmc28a authored
      Fix some Neon lengthening, narrowing and insertion instructions that should
      zero the upper bits of SVE registers, and add regression tests.
      
      In particular, this fixes ADDHN2, FCVTL, FCVTL2, FCVTN2, FCVTXN2,
      FMOV (to d[1]), LD1 (single element), RADDHN2, RSUBHN2, SQXTN2, SQXTUN2, SUBHN2,
      UQXTN2 and XTN2 for simulated systems with VL > 128 bits.
      
      Also, enable FCMLA by-element instructions, for which code already exists but
      wasn't being called in simulation.
      5e267967
  26. May 16, 2024
    • mmc28a's avatar
      Fix zeroing part of SVE register for Neon INS (#95) · 2cdba9ed
      mmc28a authored
      The INS instruction inserts an element into an existing 128-bit vector, but for
      systems with larger SVE registers, bits beyond the end of the vector must be
      zeroed. Fix this and add a regression test.
      2cdba9ed
  27. Apr 30, 2024
    • Chris Jones's avatar
      Perform implicit checks on store instructions · 3134e256
      Chris Jones authored and Jacob Bramley's avatar Jacob Bramley committed
      It is possible for runtimes to perform implicit checks on store
      instructions as well as load instructions, therefore support
      performing implicit checks on store instructions as well as loads. Do
      this by returning true from memory write operations if they succeeded
      and false if they failed but were handled by a signal handler.
      
      Implicit checks on store instructions are simulated using a native
      memory load because introducing an additional memory store could
      change the observable behaviour of multithreaded runtimes. This means
      that it is not currently possible to accurately simulate the
      behaviour of implicit checks on regions with different access
      permissions for reads/writes. For example: if a page has read but not
      write permissions then an implicit check would not fail as the
      underlying probing instruction will perform a memory read.
      3134e256
  28. Apr 16, 2024
    • Chris Jones's avatar
      Check ld* functions for failure (#92) · 89dfbc00
      Chris Jones authored
      All memory read functions (e.g: ld1, ld2, etc...) return a value
      (either std::nullopt or false) to signal that the memory read failed.
      Some of these memory read functions were not being checked for
      failure; fix this by checking these functions for failure.
      89dfbc00
Loading