(no commit message)
authorlkcl <lkcl@web>
Tue, 17 May 2022 17:17:41 +0000 (18:17 +0100)
committerIkiWiki <ikiwiki.info>
Tue, 17 May 2022 17:17:41 +0000 (18:17 +0100)
openpower/sv/cr_int_predication.mdwn

index db2c0aa65e7ab22df9cb28901b7ed0b1305185f1..27a24a641342374891f2f7b41493cf763ad36001 100644 (file)
@@ -90,9 +90,11 @@ OPF ISA WG):
 |---|---- |--|-----|-----|-----|-----  |-----  |--|----      |
 |19 |RT   |  |mask |BFA  |     |XO[0:4]|XO[5:9]|/ |          |
 |19 |     |  |     |     |     |1 //// |00011  |  |rsvd      |
-|19 |RT   |M |mask |BFA  | 0 0 |0 mode |00011  |Rc|crrweird  |
-|19 |RA   |M |mask |BF   | 0 1 |0 mode |00011  |/ |mtcrweird |
-|19 |BT   |M |mask |BFA  | 1 0 |0 mode |00011  |/ |crweirder |
+|19 |RT   |M |mask |BFA  | 0 0 |0 mode |00011  |0 |crrweird  |
+|19 |RT   |0 |mask |BFA  | 0 0 |0 mode |00011  |1 |mfcrweird |
+|19 |RA   |1 |mask |BF   | 0 0 |0 mode |00011  |1 |mtcrrweird |
+|19 |RA   |M |mask |BF   | 0 1 |0 mode |00011  |0 |mtcrweird |
+|19 |BT   |M |mask |BFA  | 0 1 |0 mode |00011  |1 |crweirder |
 |19 |BF //|M |mask |BFA  | 1 1 |0 mode |00011  |0 |crweird   |
 |19 |BF //|M |mask |BFA  | 1 1 |0 mode |00011  |1 |mcrfm     |
 
@@ -111,11 +113,50 @@ bit 19=0, bit 20=0
     n3 = mask[3] & (mode[3] == creg[3])
     result = n0|n1|n2|n3 if M else n0&n1&n2&n3
     RT[63] = result # MSB0 numbering, 63 is LSB
-    If Rc:
-        CR0 = analyse(RT)
 
 When used with SVP64 Prefixing this is a [[openpower/sv/normal]]
-SVP64 type operation and as such can use Rc=1 and RC1 Data-dependent
+SVP64 type operation and as such can use RC1 Data-dependent
+Mode capability
+
+**mfcrrweird**
+
+mode is encoded in XO and is 4 bits
+
+bit 19=0, bit 20=0
+
+    mfcrrweird: RT, BFA, mask.mode
+
+    creg = CR{BFA}
+    n0 = mask[0] & (mode[0] == creg[0])
+    n1 = mask[1] & (mode[1] == creg[1])
+    n2 = mask[2] & (mode[2] == creg[2])
+    n3 = mask[3] & (mode[3] == creg[3])
+    result = n0||n1||n2||n3
+    RT[60:63] = result # MSB0 numbering, 63 is LSB
+
+When used with SVP64 Prefixing this is a [[openpower/sv/normal]]
+SVP64 type operation and as such can use RC1 Data-dependent
+Mode capability
+
+**mtcrrweird**
+
+mode is encoded in XO and is 4 bits
+
+bit 19=0, bit 20=0
+
+    mtcrrweird: BF, RA, M, mask.mode
+
+    n0 = mask[0] & (mode[0] == RA[63])
+    n1 = mask[1] & (mode[1] == RA[62])
+    n2 = mask[2] & (mode[2] == RA[61])
+    n3 = mask[3] & (mode[3] == RA[60])
+    result = n0 || n1 || n2 || n3
+    if M:
+        result |= CR{BF} & ~mask
+    CR{BF} = result
+
+When used with SVP64 Prefixing this is a [[openpower/sv/normal]]
+SVP64 type operation and as such can use RC1 Data-dependent
 Mode capability
 
 **mtcrweird**