1. May 30, 2024
  2. May 28, 2024
  3. Feb 19, 2024
  4. Feb 03, 2024
  5. Oct 20, 2023
  6. Jun 18, 2023
  7. May 29, 2023
  8. Mar 21, 2023
  9. Jan 30, 2023
  10. Jan 12, 2023
  11. Dec 28, 2022
  12. Dec 21, 2022
  13. Dec 01, 2022
  14. Nov 30, 2022
  15. Nov 18, 2022
  16. Nov 17, 2022
  17. Oct 20, 2022
  18. Aug 09, 2022
  19. Aug 04, 2022
  20. Jul 09, 2022
  21. May 13, 2022
  22. May 05, 2022
  23. Feb 18, 2022
    • Rupert Swarbrick's avatar
      Split Xbitmanip into its proposed component extensions (#918) · c2f30c33
      Rupert Swarbrick authored
      Before this patch, spike just had an "Xbitmanip" extension which
      covered everything in the proposed bitmanip extension that hadn't been
      ratified. The problem is that if you want to model (or verify) a
      processor that targetted just some of the proposed bitmanip extension,
      you couldn't configure Spike to do that.
      
      For example, the lowRISC Ibex processor has several different
      configurations. The "balanced" configuration targetted Zba, Zbb, Zbs,
      Zbf and Zbt of the 0.92 spec. With the Zba, Zbb and Zbs ratified,
      we'll now be able to use an ISA string like
      
          rv32imc_Zba_Zbb_Zbs_XZbf_XZbt
      
      and Spike will correctly fail to decode instructions like 'bcompress',
      which would have been decoded with Xbitmanip.
      
      This patch adds a new custom extension name for each part of the
      extension that wasn't fully ratified. These have an 'X' prefix so, for
      example, the bit permutation instructions that were proposed as Zbp
      can be found under XZbp.
      
      Specifying "Xbitmanip" gets all of these extensions, so its behaviour
      should be unchanged.
      
      Note that the slo(i) / sro(i) instructions have been moved from the
      proposed Zbb to XZbp. This matches a comment in the Change History
      section of v0.93 of the bitmanip spec: it seems that the authors
      forgot to also move them in Table 2.1 (which gives the lists of
      instructions for each extension). This change won't break anything
      that currently exists, but it took quite a while to figure out what
      was going on so I thought I'd leave a breadcrumb trail for the next
      engineer!
      
      The bulk of the patch is just defining some more entries in the
      isa_extension_t enum and rewriting each of the instructions to depend
      on the relevant entry. This is mostly a straight textual replacement
      but it's slightly more complicated for things like the "pack"
      instruction that are defined by several different proposed extensions.
      c2f30c33
  24. Jan 30, 2022
  25. Jan 07, 2022
  26. Dec 17, 2021
  27. Nov 07, 2021
  28. Nov 03, 2021
  29. Sep 25, 2021
  30. Sep 08, 2021
  31. Jul 21, 2021
    • Daniel Lustig's avatar
      Priv virtual memory updates (#750) · cb8f09a4
      Daniel Lustig authored
      * Priv virtual memory updates
      
      * Priv 1.12 requires page faults when the address translation process
      reaches a PTE with any reserved bit set
      
      * Svpbmt uses two PTE bits, but otherwise has no effect on Spike (since
      Spike is sequentially consistent and does not model PMAs)
      
      * Add Svinval instructions
      
      Even though I updated riscv-opcodes separately, I merged the new
      defines into riscv/encoding.h manually, because riscv-opcodes seems
      to be a step ahead of riscv-isa-sim for a few vector opcodes, causing
      conflicts when regenerating encoding.h...
      
      If that gets fixed, and encoding.h gets regenerated automatically, I can
      remove it from this PR to avoid conflicts.
      
      * Svinval: use #include rather than copying code
      
      ..for the Svinval functions that are implemented in ways that just
      mimic SFENCE/HFENCE instructions
      
      Thanks to @aswaterman for the suggestion
      cb8f09a4
  32. May 11, 2021
    • ChunPing Chung's avatar
      Support RISC-V p-ext-proposal v0.9.2 (#637) · 0981d396
      ChunPing Chung authored
      
      
      * rvp: add 8/16 bits add/sub simd instructions
      
      * rvp: add 8/16 bits shift simd instructions
      
      * rvp: add 8/16 bits compare simd instructions
      
      * rvp: add 8/16 bits multiply simd instructions
      
      * rvp: add 8/16 bits misc simd instructions
      
      * rvp: add 8 bits unpacking simd instructions
      
      * rvp: update suppported extention and add restriction
      
      * rvp: update encoding.h and riscv.mk.in
      
      * rvp: disasm: add simd instruction support
      
      * rvp: update readme for p-ext simd instructions
      
      * rvp: fix rvp support version
      
      * rvp: update encoding.h generated from riscv-opcode p-ext branch
      
      * rvp: rename some macro argument
      
      * rvp: add pk[bb,bt,tt,tb][16,32] instructions
      
      * rvp: add kadd32, [su]maqa[_su] instructions
      
      * rvp: fix missing initial value of pd
      
      * rvp: add msw 32x32 multiply & add instructions
      
      * rvp: change to use extract64
      
      * rvp: add msw 32x16 multiply & add instructions
      
      * rvp: fix some style
      
      * rvp: change reduction marcro definition
      
      * rvp: add signed 16x32 add/subtract instructions
      
      * rvp: use stdint to replace hardcode max/minimum
      
      * rvp: refactor some p-ext macro code
      
      * rvp: add partial simd miscellaneous instructions
      
      * rvp: add signed 16 x 64 add/subtract Instructions
      
      * rvp: add 64-bit add & sub instructions
      
      * rvp: add 32-bit mul with 64-bit add/sub instructions
      
      * rvp: add 16-bit mul with 64-bit add/sub instructions
      
      * rvp: disasm: add 64 bit profile instruction support
      
      * rvp: add Q15 saturation instructions
      
      * rvp: fix kmar64/kmsr64 saturation behavior
      
      * rvp: add 32-bit computation instructions
      
      * rvp: add rdov/clrov and fix khm16 behavior of setting OV flag
      
      * rvp: add non simd miscellaneous instructions
      
      * rvp: add Q31 saturation instructions
      
      * rvp: disasm: add non-simd instruction support
      
      * rvp: add 32 bits add/sub simd instructions
      
      * rvp: fix left shift saturation bug
      
      * rvp: add 32 bits shift simd instructions
      
      * rvp: add rv64 only Q15 simd instructions
      
      * rvp: add rv64 only 32-bit multiply instructions
      
      * rvp: add rv64 only 32-bit miscellaneous instructions
      
      * rvp: add rv64 only 32-bit mul & add instructions
      
      * rvp: add rv64 only 32-bit parallel mul & add instructions
      
      * rvp: add rv64 only non-simd 32-bit shift instructions
      
      * rvp: disasm: remove redundant tab
      
      * rvp: disasm: add rv64 only instructions support
      
      * rvp: change ov csr to ucode to match v0.5.2 spec
      
      * rvp: update readme for p-ext 0.5.2
      
      * rvp: update to p-ext v0.9.1
      
      * rvp: update to p-ext v0.9.2
      
      * rvp: update readme for p-ext 0.9.2
      
      * rvp: fix macro for PKxx16 & PKxx32 commands.
      
      * rvp: fix missing for in PKxxdd macro
      
      * Sign-extension for p-ext insns
      
      * * Fixed uclipNN insns while sh >> 64 is an UB.
      * Added missing OV
      * Added missing sext_xlen
      
      * Remove unused macroses
      
      * Sign extension for RD_PAIR macro
      
      * rvp: remove lost tab
      
      Co-authored-by: default avatarMark Fedorov <mark.fedorov@cloudbear.ru>
      0981d396
  33. Feb 25, 2021
  34. Feb 09, 2021
  35. Jan 23, 2021
    • Ben Marshall's avatar
      scalar-crypto: Initial spike support for v0.8.1 (#635) · d6238d99
      Ben Marshall authored
      Brief:
      
      - This commit adds spike support for the scalar cryptography extension.
        See the riscv-crypto repository (https://github.com/riscv/riscv-crypto)
        for more information on this extension.
      
      - It is based on the experimental patch which has so far been kept in the
        riscv-crypto repository. Now that scalar crypto is nearly at the "freeze"
        stage and entering opcode consistency review, it makes sense to start
        upstreaming our experimental version.
      
      - In terms of compiler support - we are using an experimental patch in
        the riscv-crypto repository at the moment, others are working on an
        upstream appropriate version.
      
      Details:
      
      - Add support for dedicated scalar crypto instructions.
      
      - Add very basic support for the entropy source (entropy_source.h).
        Much of the behaviour of this is implementation specific. This model
        aims to provide the bare minimum of functionality which can be used to
        quickly develop software. It uses /dev/urandom as its entropy source for
        now.
      
      - Scalar crypto is unique in that it _borrows_ instructions from the
        Bitmanipulation extension. This is currently _not_ encoded in the patch,
        as I didn't want to damage anything in Bitmanip which is currently under
        review. However, I've added a macro in riscv/decode.h called
        "require_either_extension(A,B)", which allows instructions to be valid
        opcodes iff they are in one or both extensions.
      
       On branch scalar-crypto
       Changes to be committed:
      	modified:   README.md
      	modified:   riscv/decode.h
      	modified:   riscv/encoding.h
      	new file:   riscv/entropy_source.h
      	new file:   riscv/insns/aes64im.h
      	new file:   riscv/insns/aes64ks1i.h
      	new file:   riscv/insns/aes64ks2.h
      	new file:   riscv/insns/aes_common.h
      	new file:   riscv/insns/aesds.h
      	new file:   riscv/insns/aesdsm.h
      	new file:   riscv/insns/aeses.h
      	new file:   riscv/insns/aesesm.h
      	new file:   riscv/insns/sha256sig0.h
      	new file:   riscv/insns/sha256sig1.h
      	new file:   riscv/insns/sha256sum0.h
      	new file:   riscv/insns/sha256sum1.h
      	new file:   riscv/insns/sha512sig0.h
      	new file:   riscv/insns/sha512sig0h.h
      	new file:   riscv/insns/sha512sig0l.h
      	new file:   riscv/insns/sha512sig1.h
      	new file:   riscv/insns/sha512sig1h.h
      	new file:   riscv/insns/sha512sig1l.h
      	new file:   riscv/insns/sha512sum0.h
      	new file:   riscv/insns/sha512sum0r.h
      	new file:   riscv/insns/sha512sum1.h
      	new file:   riscv/insns/sha512sum1r.h
      	new file:   riscv/insns/sm3p0.h
      	new file:   riscv/insns/sm3p1.h
      	new file:   riscv/insns/sm4_common.h
      	new file:   riscv/insns/sm4ed.h
      	new file:   riscv/insns/sm4ks.h
      	modified:   riscv/processor.cc
      	modified:   riscv/processor.h
      	modified:   riscv/riscv.mk.in
      d6238d99
  36. Jan 15, 2021
  37. Jan 12, 2021
  38. Nov 19, 2020
  39. Nov 10, 2020