tree ecc1bf5099c5e80d681fdf82efe387e8fa3bd271
parent a23672aa363bd393932aba3926987be42748b9c3
author Greg Chadwick <gac@lowrisc.org> 1587043804 +0100
committer Garret Kelly <Garret.Kelly@gmail.com> 1587056023 -0400

Update riscv_compliance to riscv/riscv-compliance@5a978cf

Update code from upstream repository https://github.com/riscv/riscv-
compliance.git to revision 5a978cfd444d5e640150d46703deda99057b2bbb

* Restructure (riscv/riscv-compliance#101) (Neel Gala)
* Update ChangeLog (Neel Gala)
* updated ChangeLog (Neel Gala)
* fixes issue riscv/riscv-compliance#95 (Neel Gala)
* riscv-test-suite/rv64im/Makefrag: remove duplicate REMUW in value of
  variable rv64im_sc_tests (Daniel S. Wilkerson)
* riscv-test-suite/rv64i/Makefrag: remove duplicate SRAIW in value of
  variable rv64i_sc_tests (Daniel S. Wilkerson)
* removed the .pdf with version number (Allen Baum)
* minor typographical corrections (Allen Baum)
* Adding the jpg of the diagram included in the testformatspec doc
  (Allen Baum)
* Adding a prebuilt version of the testspecformat (Allen Baum)
*     * typo grammatical, and consistency fixes (Allen Baum)
*        * typos fixed        * added RVTEST_BASEUPD macro        *
  added explanations for each macro        * clarified restrictions on
  #ifdefs        * added comment that test cases with identical
  conditions should be combined into a single case        * documented
  that test case first parameter should match the #ifdef parameter
  that precedes it (Allen Baum)
* added missing parameters to BASEUPD macro (Allen Baum)
* * modified macro names to conformn to riscof naming convention of
  model specific vs. pre-defined * add more complete list of macros,
  their uses, parameters, and whether they are required or optional *
  minor structural changes (moving sentences, renumbering) and typo
  fixes * clarified impact of debug macros * clarified how SIGUPD and
  BASEUPD must be used * remove section about test taxonomy, binary
  tests, emulated ops * clarify/fix  boundary between test target and
  framework responsibilities   (split test target into test target and
  test shell) * remove To Be discussed items that have been discussed
  * remove default case condition; if conditions are unchanged, part
  of same case *  minor grammatical changes related to the above
  (Allen Baum)
* fixed some references that should have been changed, added IO_WRITE
  to list of macros (Allen Baum)
* updated history with all the changes (Allen Baum)
* fixed the appendix so it appears in the TOC (Allen Baum)
* removed references to address in signature, moved note about
  multiple test cases in a test closer to definition fixed cut/paste
  error in example of test pool changed case of test subdirectoies to
  be all caos for primar extensions and architectures, camel-case for
  Z-extensions changed test example to match new macros, including
  ifdefs (Allen Baum)
* Minor formatting fixes (Allen Baum)
* More grammar, spelling corrections and clarifications, minor
  formatting changes. (Allen Baum)
* yet more grammatical fixes and clarifications add ToBeDiscussed
  items for emulated ops and binary tests (Allen Baum)
* minor grammer updates (Allen Baum)
* Update spec/TestFormatSpec.adoc (Allen Baum)
* removed ambiguity of framework functionality: it will insert test
  part names and version numbers and conmpare signatures. (Allen Baum)
* Changed  signature format to fixed maxsize physical addr:32b data in
  COMPLIANCE_DATA_BEGIN/END range. (Allen Baum)
* minor spelling, wording corrections (Allen Baum)
* Changes to match riscof implementation of macros (Allen Baum)
* spelling fixes and To Be Discussed additions and clarifications
  (Allen Baum)
* gitignore now ignores Macintosh invisible .DS_STore files ChangeLog
  lists all the changes made TestPsecFormat updated to v1.2 with
  numerous granmmer/spelling corrections,  updates to changes that
  have been decided, new directory structure,  new test macros,
  updated signature format, added clarifications, examples,  future
  work, and notes that this is still a work in progress and does not
  reflect the current state of the test repository. (Allen Baum)
* Fix Ibex target following parallel changes (Tom Roberts)
* Ignore case when comparing signature outputs (Xiretza)
* Support F extension on RV32 sail-riscv-c. (Prashanth Mundkur)
* Correct a typo in README (Felix Yan)
* Document the usage of Parallel execution (eroom1966)
* Add Parallel make for supported targets (eroom1966)
* Fix issues riscv/riscv-compliance#84 riscv/riscv-compliance#76
  (eroom1966)
* Update to riscvOVPsim (eroom1966)
* Update of riscv-ovpsim (eroom1966)
* fix IO behavior for verbose logging (eroom1966)
* source code files for improved coverage (eroom1966)
* Added coverage report information (eroom1966)
* HVB update on jalr (eroom1966)
* Add HVB new enhanced coverage tests (eroom1966)
* Fix for issue riscv/riscv-compliance#67 (eroom1966)
* Restructured RV32I to move Zicsr and Zifencei into their own suites
  (eroom1966)

Signed-off-by: Greg Chadwick <gac@lowrisc.org>
