bug #1183: attempt first ddffirst mapreduce mode
[openpower-isa.git] / openpower / isa / fixedlogical.mdwn
index bc5e3ceeb8f14ee5ed801c0563d52df12da17fe5..01eeffb1defc5255faea6b16c52a26e2c3a23bd4 100644 (file)
@@ -18,7 +18,7 @@ D-Form
 
 Pseudo-code:
 
-    RA <- (RS) & XLCASTU(UI)
+    RA <- (RS) & EXTZ(UI)
 
 Special Registers Altered:
 
@@ -32,7 +32,7 @@ D-Form
 
 Pseudo-code:
 
-    RA <- (RS) | XLCASTU(UI)
+    RA <- (RS) | EXTZ(UI)
 
 Special Registers Altered:
 
@@ -46,7 +46,7 @@ D-Form
 
 Pseudo-code:
 
-    RA <- (RS) & XLCASTU(UI || [0]*16)
+    RA <- (RS) & EXTZ(UI || [0]*16)
 
 Special Registers Altered:
 
@@ -60,7 +60,7 @@ D-Form
 
 Pseudo-code:
 
-    RA <- (RS) | XLCASTU(UI || [0]*16)
+    RA <- (RS) | EXTZ(UI || [0]*16)
 
 Special Registers Altered:
 
@@ -74,7 +74,7 @@ D-Form
 
 Pseudo-code:
 
-    RA <- (RS) ^ XLCASTU(UI || [0]*16)
+    RA <- (RS) ^ EXTZ(UI || [0]*16)
 
 Special Registers Altered:
 
@@ -88,7 +88,7 @@ D-Form
 
 Pseudo-code:
 
-    RA <- (RS) ^ XLCASTU(UI)
+    RA <- (RS) ^ EXTZ(UI)
 
 Special Registers Altered:
 
@@ -278,7 +278,7 @@ Pseudo-code:
        if (RS)[XLEN-1-n] = 0b1 then
             leave
        n  <- n + 1
-    RA <- XLCASTU(n)
+    RA <- EXTZ(n)
 
 Special Registers Altered:
 
@@ -447,12 +447,50 @@ Pseudo-code:
        if (RS)[XLEN-1-n] = 0b1 then
             leave
        n  <- n + 1
-    RA <- XLCASTU(n)
+    RA <- EXTZ(n)
 
 Special Registers Altered:
 
     CR0                    (if Rc=1)
 
+# Count Leading Zeros Doubleword under bit Mask
+
+X-Form
+
+* cntlzdm RA,RS,RB
+
+Pseudo-code:
+
+    count <- 0
+    do i = 0 to 63
+        if (RB)[i] = 1 then
+            if (RS)[i] = 1 then leave
+            count <- count + 1
+    RA <- EXTZ64(count)
+
+Special Registers Altered:
+
+    None
+
+# Count Trailing Zeros Doubleword under bit Mask
+
+X-Form
+
+* cnttzdm RA,RS,RB
+
+Pseudo-code:
+
+    count <- 0
+    do i = 0 to 63
+        if (RB)[63-i] = 1 then
+            if (RS)[63-i] = 1 then leave
+            count <- count + 1
+    RA <- EXTZ64(count)
+
+Special Registers Altered:
+
+    None
+
 # Bit Permute Doubleword
 
 X-Form
@@ -474,4 +512,72 @@ Special Registers Altered:
 
     None
 
-<!-- Checked March 2021 -->
+# Centrifuge Doubleword
+
+X-Form
+
+* cfuged RA,RS,RB
+
+Pseudo-code:
+
+    ptr0 <- 0
+    ptr1 <- 0
+    result[0:63] <- 0
+    do i = 0 to 63
+        if (RB)[i] = 0 then
+            result[ptr0] <- (RS)[i]
+            ptr0 <- ptr0 + 1
+        if (RB)[63-i] = 1 then
+            result[63-ptr1] <- (RS)[63-i]
+            ptr1 <- ptr1 + 1
+    RA <- result
+
+Special Registers Altered:
+
+    None
+
+# Parallel Bits Extract Doubleword
+
+X-Form
+
+* pextd RA,RS,RB
+
+Pseudo-code:
+
+    result[0:63] <- 0
+    mask <- (RB)
+    m <- 0
+    k <- 0
+    do while m < 64
+        if (RB)[63-m] = 1 then
+            result[63-k] <- (RS)[63-m]
+            k <- k + 1
+        m <- m + 1
+    RA <- result
+
+Special Registers Altered:
+
+    None
+
+# Parallel Bits Deposit Doubleword
+
+X-Form
+
+* pdepd RA,RS,RB
+
+Pseudo-code:
+
+    result[0:63] <- 0
+    mask <- (RB)
+    m <- 0
+    k <- 0
+    do while m < 64
+        if (RB)[63-m] = 1 then
+            result[63-m] <- (RS)[63-k]
+            k <- k + 1
+        m <- m + 1
+    RA <- result
+
+Special Registers Altered:
+
+    None