|0-5|6-10 |11|12-15|16-18|19-20|21-25 |26-30 |31|name |
|---|---- |--|-----|-----|-----|----- |----- |--|---- |
-|19 |RT | |mask |BB | |XO[0:4]|XO[5:9]|/ | |
-|19 |RT |M |mask |BB | 0 0 |XO[0:4]|0 mode |Rc|crrweird |
-|19 |RA |/ |mask |BT | 0 1 |XO[0:4]|0 mode |/ |mtcrweird |
-|19 |BT //|M |mask |BB | 1 0 |XO[0:4]|0 mode |/ |crweird |
-|19 |BFT |/ |mask |BB | 1 1 |XO[0:4]|0 mode |/ |crweirder |
+|19 |RT | |mask |BFA | |XO[0:4]|XO[5:9]|/ | |
+|19 |RT |M |mask |BFA | 0 0 |XO[0:4]|0 mode |Rc|crrweird |
+|19 |RA |/ |mask |BF | 0 1 |XO[0:4]|0 mode |/ |mtcrweird |
+|19 |BFT//|M |mask |BFA | 1 0 |XO[0:4]|0 mode |/ |crweird |
+|19 |BF |/ |mask |BFA | 1 1 |XO[0:4]|0 mode |/ |crweirder |
**crrweird**
bit 19=0, bit 20=0
- crrweird: RT, BB, mask.mode
+ crrweird: RT, BFA, mask.mode
- creg = CR{BB}
+ creg = CR{BFA}
n0 = mask[0] & (mode[0] == creg[0])
n1 = mask[1] & (mode[1] == creg[1])
n2 = mask[2] & (mode[2] == creg[2])
bit 19=0, bit 20=1
- mtcrweird: BT, RA, mask.mode
+ mtcrweird: BF, RA, mask.mode
reg = (RA|0)
lsb = reg[63] # MSB0 numbering
n1 = mask[1] & (mode[1] == lsb)
n2 = mask[2] & (mode[2] == lsb)
n3 = mask[3] & (mode[3] == lsb)
- CR{BT} = n0 || n1 || n2 || n3
+ CR{BF} = n0 || n1 || n2 || n3
When used with SVP64 Prefixing this is a [[openpower/sv/cr_ops]] SVP64 type operation that has
3-bit Data-dependent and 3-bit Predicate-result capability
bit 19=1, bit 20=0
- crweird: BT, BB, mask.mode
+ crweird: BF, BFA, mask.mode
- creg = CR{BB}
+ 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])
- CR{BT} = n0 || n1 || n2 || n3
+ CR{BF} = n0 || n1 || n2 || n3
When used with SVP64 Prefixing this is a [[openpower/sv/cr_ops]] SVP64 type operation that has
3-bit Data-dependent and 3-bit Predicate-result capability
bit 19=1, bit 20=1
- crweirder: BFT, BB, mask.mode
+ crweirder: BT, BFA, mask.mode
- creg = CR{BB}
+ 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])
- BF = BFT[2:4] # select CR
- bit = BFT[0:1] # select bit of CR
+ BF = BT[2:4] # select CR
+ bit = BT[0:1] # select bit of CR
result = n0|n1|n2|n3 if M else n0&n1&n2&n3
CR{BF}[bit] = result
**Example Pseudo-ops:**
- mtcri BB, mode mtcrweird r0, BB, 0b1111.~mode
- mtcrset BB, mask mtcrweird r0, BB, mask.0b0000
- mtcrclr BB, mask mtcrweird r0, BB, mask.0b1111
+ mtcri BFA, mode mtcrweird r0, BFA, 0b1111.~mode
+ mtcrset BFA, mask mtcrweird r0, BFA, mask.0b0000
+ mtcrclr BFA, mask mtcrweird r0, BFA, mask.0b1111
# Vectorised versions