clarify immediate construction
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 16 Nov 2020 15:30:57 +0000 (15:30 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 16 Nov 2020 15:30:57 +0000 (15:30 +0000)
openpower/sv/16_bit_compressed.mdwn

index 470f8e2dcc9145ac84844f653090c88e9f3c4ad9..545a705d00eb7bfeb0d499aeb592c6f23cd07836 100644 (file)
@@ -93,22 +93,26 @@ addi, mulli etc.)
 
 only available in 16-bit mode, and only available when M=1 and N=1
 
-    | 0 | 1  | 2 3 4 | | 567.8 | 9ab  | c d e | f |
-    | 1 | i2 |  RT   | | 010.0 | RB|0 | imm   | 1 | addi.
-    | 1 | i2 |  RT   | | 010.1 | RB|0 | imm   | 1 | naddi.
-    | 1 | i2         | | 011.0 | RB   | imm   | 1 | cmpdi
-    | 1 | i2         | | 011.1 | RB   | imm   | 1 | cmpwi
-    | 1 | i2         | | 100.0 | RT   | imm   | 1 | sti
-    | 1 | i2         | | 100.1 | RT   | imm   | 1 | fstwi
-    | 1 | i2         | | 101.0 | RA   | imm   | 1 | ldi
-    | 1 | i2         | | 101.1 | RA   | imm   | 1 | lwi
-    | 1 | i2         | | 110.0 | RA   | imm   | 1 | flwi
-    | 1 | i2         | | 110.1 | RA   | imm   | 1 | fldi
-
-* Note that bc is included (below)
-* immediate is constructed from imm (LSBs) and i2 (MSB)
-* "naddi." is "negative signed immediate" (maps to addis in 32-bit space,
-  range is -NNN to -1.  zero is excluded because it is covered by addi.)
+    | 0 | 1  | 2 3 4 | | 567.8  | 9ab  | c d e | f |
+    | 1 | i2 |  RT   | | 010.i3 | RB|0 | imm   | 1 | addi.
+    | 1 | i2         | | 011.0  | RB   | imm   | 1 | cmpdi
+    | 1 | i2         | | 011.1  | RB   | imm   | 1 | cmpwi
+    | 1 | i2         | | 100.0  | RT   | imm   | 1 | sti
+    | 1 | i2         | | 100.1  | RT   | imm   | 1 | fstwi
+    | 1 | i2         | | 101.0  | RA   | imm   | 1 | ldi
+    | 1 | i2         | | 101.1  | RA   | imm   | 1 | lwi
+    | 1 | i2         | | 110.0  | RA   | imm   | 1 | flwi
+    | 1 | i2         | | 110.1  | RA   | imm   | 1 | fldi
+
+Construction of immediate:
+
+* addi is EXTS(i3||i2||imm) to give a 5-bit range -32 to +31
+* all others are EXTS(i2||imm) to give a 7-bit range -128 to +127
+  (further for LD/ST due to word/dword-alignment)
+
+Further Notes:
+
+* bc also has an immediate mode, listed below in Branch section
 * for LD/ST, offset is aligned.  8-byte: i2||imm||0b000 4-byte: 0b00
 * SV Prefix over-rides help provide alternative bitwidths for LD/ST
 * RB|0 if RB is zero, addi. becomes "li" (this only works if RT takes