1. 03 Feb, 2025 1 commit
  2. 01 Feb, 2025 2 commits
  3. 31 Jan, 2025 4 commits
  4. 25 Jan, 2025 4 commits
  5. 16 Jan, 2025 1 commit
    • Russell Graves's avatar
      Fix vqdmulhs_s32 native alias. · 0bd19a99
      Russell Graves authored
      Function prototype has two parameters:
      simde_vqdmulhs_s32(int32_t a, int32_t b)
      
      Native define only had one.  This does not build.
      Tests only ever called with the simde_ prefix.
      0bd19a99
  6. 14 Jan, 2025 2 commits
    • jinbo's avatar
      x86 avx2: small fixes for loongarch · 62f40d4b
      jinbo authored
      1. fix typo:
        Modify simde_mm256_bslli_epi128 to simde_mm256_bsrli_epi128.
      2. fix loongarch compiler errors:
        At present, the instructions like slli/srli/srai on loongarch
        only accept immediate constant values for shit count, so in order to
        avoid compiler errors in the build process, we need to use
        sll/srl/sra version instead. In the feature, if the compiler
        supports the formers, we can restore them.
      62f40d4b
    • jinbo's avatar
      x86 sse2: small fixes for loongarch · d656b4d7
      jinbo authored
      At present, the instructions like slli/srli on loongarch only
      accept immediate constant values for shit count, so in order
      to avoid compiler errors in the build process, we need to use
      sll/srl version instead. In the feature, if the compiler
      supports the formers, we can restore them.
      d656b4d7
  7. 11 Jan, 2025 3 commits
  8. 04 Jan, 2025 3 commits
    • Ryo Suzuki's avatar
      arm neon qdmlal: fix saturation (#1194) · 69c9cd5c
      Ryo Suzuki authored
      * Fix qdmlal instructions
      
      qdmlal instructions were implemented without saturation.
      This has been fixed by utilising existing SIMDe saturating mult and add instructions.
      Unit tests have been updated to test for all possible saturation cases.
      
      - Fix qdmlal, qdmlal_n, qdmlal_lane,  qdmlal_high, qdmlal_high_n and qdmlal_high_lane
      - Update unit tests for qdmlal, qdmlal_n, qdmlal_lane, qdmlal_high, qdmlal_high_n, qdmala_high_lane
      
      Change-Id: I8d0d8cfba3f8d5203f2028efbe74b00c51485c61
      
      * arm neon qdmlal_high_lane: unroll SIMDE_CONSTIFY for testing macro implemented functions with MSVC
      
      ---------
      Co-authored-by: default avatarMichael R. Crusoe <michael.crusoe@gmail.com>
      69c9cd5c
    • Russell Graves's avatar
      Fix vqshlud_n_s64 implementation to be 64-bit. · 34136823
      Russell Graves authored
      The scalar vqshlud_n_s64 function was wrong, and there was no test
      case for it (or the scalar 32 bit form).  Add test cases for the
      scalar functions (test vectors generated on GCE ARMv9 system),
      validate the fix for the 64-bit scalar form.
      34136823
    • Ryo's avatar
      Fix qdmlsl instructions · 483a4bcc
      Ryo authored
      The qdmlsl instructions were implemented without any saturation.
      This has been fixed by utilising existing saturating instructions which
      are implemented correctly.
      
      Unit tests have also been updated to test for saturation.
      
      Change-Id: Ia9e5a7bd850bc178920c19e390c17db5a3bfbc4f
      483a4bcc
  9. 03 Jan, 2025 5 commits
    • Russell Graves's avatar
      arm neon qshl: Fix UQSHL to match hardware. Add extensive test vectors. (#1256) · f275fffd
      Russell Graves authored
      UQSHL was wrong in a variety of ways.  Most importantly, it did not
      trim off the low byte for the shift as per the instruction spec:
      "... shifts the element by a value from the least significant byte
      of the corresponding element of the second source register..."
      This was not detected in the tests, as the test vectors were limited
      to small shift values that did not demonstrate the fault.
      
      Behavior is fixed to be correct, per hardware.  Test vectors are
      dramatically expanded, using both the previous small-range values as
      well as additional full-range values.  Vectors generated on an ARMv9
      system (Google Compute Engine C4A).
      f275fffd
    • Russell Graves's avatar
      arm neon qdmull: Fix SQDMULL implementation for 32-bit inputs. (#1255) · d95bd9d7
      Russell Graves authored
      The non-vectorized SQDMULL implementation was wrong for 32-bit
      inputs.  It incorrectly checked one of the operands to see if the
      value would overflow before doubling it, not the result of the
      initial multiplication.  It now matches the 16-bit operand version,
      and also matches hardware.  A test has been added for the scalar
      form of the function, testing a range of values that will saturate
      when multiplied and doubled.  This set of test vectors was produced
      on an ARMv9 machine (Google Cloud box), failed tests on x86 with the
      existing code, and passes with the modified code.
      d95bd9d7
    • Michael R. Crusoe's avatar
      4b900704
    • Russell Graves's avatar
      risc64 gcc-14: Disable uninitialized variable warnings for some ARM neon SM3 functions · 0be41ec7
      Russell Graves authored
      r_.values _is_ being initialized.  The compiler is missing this.
      
      Possible compiler bug.
      Co-authored-by: default avatarMichael R. Crusoe <crusoe@debian.org>
      0be41ec7
    • Russell Graves's avatar
      arm: Rename ARM ROL/ROR functions with a SIMDE prefix. · 70fc574b
      Russell Graves authored
      Most SIMDe functions have the SIMDE_ or simde_ prefix internally.
      Several of the ARM hash functions do not have this prefix, and this
      means that the standard names of ROR32/ROL32 can conflict with other
      projects using the library.
      
      This is purely a cosmetic change with internal function renaming.  It
      changes no external interfaces, simply removes a source of potential
      conflict with other projects that have similarly named macros.
      70fc574b
  10. 02 Jan, 2025 2 commits
    • Russell Graves's avatar
      arm neon sli_n: Fix invalid shift warnings (#1253) · a39bd6dd
      Russell Graves authored
      Per the ARMv8 manual, the valid range of shifts for the vector SLI
      operations is "0 to the element width in bits minus 1."  The existing
      SIMDe implementation creates an invalid shift in the case of 0, as
      the shifts are (element width - n) - so, for a 0-bit shift on a
      64-bit value, the shift is 64.  This is undefined per the C spec, and
      leads to compiler warnings on build.
      
      This fix changes the sli_n shift operations to work properly for the
      valid range of values, shifting ((element width - 1) - n), with a
      modified constant value to generate the same results (7f... instead
      of ff...).
      
      While the existing tests all pass with the change, a number of the
      tests have been modified (and have new constant values generated) to
      properly exercise and demonstrate the "n == 0" shift case.  These
      test vectors were generated on an ARMv9 system (Google Compute Engine
      C4A system), and pass on x86 hardware as well.
      a39bd6dd
    • Michael R. Crusoe's avatar
  11. 19 Dec, 2024 1 commit
  12. 17 Dec, 2024 3 commits
  13. 11 Dec, 2024 6 commits
  14. 05 Dec, 2024 1 commit
  15. 04 Dec, 2024 1 commit
  16. 28 Nov, 2024 1 commit