update branch RVC
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 30 Jun 2019 19:59:29 +0000 (20:59 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 30 Jun 2019 19:59:29 +0000 (20:59 +0100)
simple_v_extension/sv_prefix_proposal/discussion.rst

index 883a56a34e3f0dce65f46fbd20b07099ccece99f..cc4438bd585aebf7b2c10eb172f7f685598406fd 100644 (file)
@@ -1,15 +1,23 @@
 RVC
 ===
 
-The comment in the RVC section says that the Opcodes will be evaluated to see which are most useful to provide.
+The comment in the RVC section says that the Opcodes will be evaluated
+to see which are most useful to provide.
 
-This takes a huge amount of time and, if not *exactly* RVC, would require a special decode engine, taking up extra gates as well as need time to develop.
+This takes a huge amount of time and, if not *exactly* RVC, would require
+a special decode engine, taking up extra gates as well as need time
+to develop.
 
-Far better to just embed RVC into the opcode and prefix it. This is inline with the strategic principle behind SV: "No new opcodes, only prefixed augmentation"
+Far better to just embed RVC into the opcode and prefix it. This is
+inline with the strategic principle behind SV: "No new opcodes, only
+prefixed augmentation"
 
-Taking an entire major 32 bit opcode (or two) seems logical (RV128 space). I type funct3 to specify the C type page, Imm 12 bits for the operation.
+Taking an entire major 32 bit opcode (or two) seems logical (RV128
+space). I type funct3 to specify the C type page, Imm 12 bits for the
+operation.
 
-Or, just "to hell with it" and just take the entire opcode and stuff C into it, no regard for R/I/U/S and instead do whatever we like.
+Or, just "to hell with it" and just take the entire opcode and stuff C
+into it, no regard for R/I/U/S and instead do whatever we like.
 
 
 +----------+------+---------------------+---------------------+-------+--------+
@@ -95,6 +103,14 @@ Mapping P32-* Quadrants 0-2 to CUSTOM OPCODEs 0-2:
 | P32C RVC-Q2 | P32-*  | RVC[15:2] | OPCODE-2 |
 +-------------+--------+-----------+----------+
 
+Notes:
+
+* Branch type requires 2 predicate registers as the second
+  is used to store the combined results of the comparisons
+  (not as twin-predication).  The tpred field is therefore
+  used to determine whether x10 is enabled as the second
+  register.  TDB, there may be a better (unique) encoding
+
 Questions
 =========