(no commit message)
authorlkcl <lkcl@web>
Sat, 13 Feb 2021 21:24:36 +0000 (21:24 +0000)
committerIkiWiki <ikiwiki.info>
Sat, 13 Feb 2021 21:24:36 +0000 (21:24 +0000)
openpower/sv/bitmanip.mdwn

index 19b4a528b46b5b9cb2fef91707ba405ef6d48094..057cf2bb893a7d39ad55a669a46615493d8f69c2 100644 (file)
@@ -278,12 +278,21 @@ uint_xlen_t bmext(RA, RB, sh)
 }
 ```
 
-bitmask extract with reverse
+bitmask extract with reverse.  can be done by bitinverting all of RA and getting bits of RA from the opposite end.
 
 ```
 msb = rb[5:0];
 rev[0:msb] = ra[msb:0];
 rt = ZE(rev[msb:0]);
+
+uint_xlen_t bmextrev(RA, RB, sh)
+{
+    int shamt = (RB & (XLEN - 1));
+    shamt = (XLEN-1)-shamt;  # shift other end
+    bra = bitreverse(RA)     # swap LSB-MSB
+    mask = (2<<sh)-1;
+    return mask & (bra >> shamt);
+}
 ```
 
 | 0.5|6.10|11.15|16.20|21.26| 27..30  |31| name   |