GitLab will be upgraded on 31 Jan 2023 from 2.00 pm (AEDT) to 3.00 pm (AEDT). During the update, GitLab and Mattermost services will not be available. If you have any concerns with this, please talk to us at N110 (b) CSIT building.

  1. 20 Aug, 2017 1 commit
    • Adam Nelson's avatar
      Atomic memory cells and operations for WMM/RISC-V · 59737ac5
      Adam Nelson authored
      - Memory and registers are split up into typed atomic cells
      - Value type now contains only scalar values
      - Instructions are compiled down to WMM "operations", allowing stores
        and loads of composite values to be split up into atomic parts
      - Scheduler now executes one operation at a time, rather than one block
        at a time
      - New scheduler steps for WMM
      - Commands (formerly Thread Actions) such as allocation now executed at
        the global scheduler level. Action IDs no longer needed.
      - Threads and stacks changed completely; registers now stored in stack
        frames
      - Monads pretty-print properly again!
      - Patricia trees replaced with sptrees
      
      Lots of code is still commented out, and tests still don't work, but
      the main formalization code compiles.
      59737ac5
  2. 06 Jun, 2017 1 commit
  3. 08 Dec, 2016 1 commit
    • Adam Nelson's avatar
      Make symbolic an applicative (incomplete) · 9fb09332
      Adam Nelson authored
      The symbolic value monad was too general, making it impossible to prove
      anything useful about it. For example, a symbolic value could become
      unresolvable in response to a new resolved value being added to the context,
      making recursive resolution loop forever.
      
      In order to prove that resolution terminates, symbolic was changed to an
      applicative. The new symbolic type keeps a list of all locations that it depends
      on, including a special case for "the last value of this memory location before
      this action".
      
      This commit only contains changes to uvmMemoryTheory and its dependencies.
      uvmThreadSemantics and uvmScheduler are not done yet, and do not compile.
      9fb09332
  4. 24 Nov, 2016 1 commit
    • Adam Nelson's avatar
      Redesign with symbolic values (incomplete) · 5fbca740
      Adam Nelson authored
      Thread and memory semantics are being overhauled to use lazy symbolic values,
      making the system similar to the one described in the Nienhuis paper.
      
      Everything up to uvmThreadSemantics compiles; uvmScheduler is still incomplete.
      Tests currently don't work.
      
      Changes include:
      
      - The "symbolic" monad defines lazy computations.
      
      - Thread semantics execute an entire block at a time.
      
      - Thread semantics is greatly simplified, with fewer record types, queues, and
        edge cases.
      
      - Thread semantics does not know anything about the actual values of its
        registers. Branching instructions must receive a "guess" value from the
        scheduler; this value may be a real register value or a branch prediction.
      
      - There are now only two scheduler step types: Commit (commits a memory message)
        and Proceed (moves a thread to the next block, optionally with a branch
        prediction).
      
      - Pluggable memory models are gone; concurrency semantics will be handled by an
        extra layer on top of the scheduler.
      
      - DefineUtils has some shortcuts for defining monads and num wrapper types.
      5fbca740
  5. 15 Nov, 2016 1 commit
  6. 29 Sep, 2016 1 commit
    • Michael Norrish's avatar
      Fix parsing of <*> · 5043ea97
      Michael Norrish authored
      This symbol already exists in the standard grammar (as a
      left-associative infix at level 500). It maps to the name
      "APPLICATIVE_FAPPLY", so this name is the one scripts should target if
      they want to overload in another notion binding to <*>.
      5043ea97
  7. 04 Aug, 2016 1 commit
  8. 28 Jul, 2016 1 commit
    • Adam R. Nelson's avatar
      Add .const parsing, make bundles fail w/ or_exit · 0b2a1b3b
      Adam R. Nelson authored
      ParseUIR has been split into UIRLexer and ParseUIR. It now produces
      bundles of type 'environment -> environment or_exit', allowing for
      an error case in the event of type mismatches or undefined global
      names (cases which can't be detected by the SML code).
      0b2a1b3b
  9. 16 Jul, 2016 1 commit
    • Adam R. Nelson's avatar
      Make eval'ing UIR code fragments work · fdfff5db
      Adam R. Nelson authored
      This was accomplished by changing the way enter_block works, removing
      the overly-complicated argument passing through simulated ID
      instructions and replacing it with memreq propagation in registers.
      A lot of support code and code/proof cleanup was also added.
      fdfff5db
  10. 13 Jul, 2016 1 commit
  11. 08 Jul, 2016 1 commit
  12. 06 Jul, 2016 1 commit
  13. 03 Jun, 2016 1 commit