Skip to content

Instantly share code, notes, and snippets.

@jeremytregunna
Last active October 21, 2019 18:54
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jeremytregunna/870e317f15c985eeea62e6c6bbaa4d95 to your computer and use it in GitHub Desktop.
Save jeremytregunna/870e317f15c985eeea62e6c6bbaa4d95 to your computer and use it in GitHub Desktop.
31 28 27 downto 22 21 downto 16 15 12 11 downto 6 5 downto 0
GID SI SID / SIM DID GID SI SID / SIM DID

2-issue instructions only.

Should the compiler wish to send a no transport instruction (aka noop in other architectures); it is expected that it will choose to encode an instruction (or two instructions) whose guard fails. For instance, you could construct an instruction whose guard checks for source ID or destination ID to be non-zero, comparing SID or DID address 0 while setting the guard to fail if the value at this address is zero (see the below table for information on guards to achieve this behaviour). One such instruction would be: 16'b1000000000000000. This instruction compares the values at SID and DID to ensure they are both non-zero before issuing the instruction.

  • GID - Guard ID (conditional execution of instructions)
    • 3'b000 - Value at source ID is not zero
    • 3'b001 - Value at source ID is zero
    • 3'b010 - Value at destination ID is not zero
    • 3'b011 - Value at destination ID is zero
    • 3'b100 - Value at SID and DID are not zero
    • 3'b101 - Value at SID is zero and DID is non-zero
    • 3'b110 - Value at SID is non-zero and DID is zero
    • 3'b111 - Unconditional, execute normally
  • SI - Short immediate present
  • SIM - Short immediate
  • SID - Source ID
  • DID - Destination ID
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment