|---|---- |--|-----|-----|-----|----- |----- |--|---- |
|19 |RT | |mask |BFA | |XO[0:4]|XO[5:9]|/ | |
|19 | | | | | |1 //// |00011 | |rsvd |
-|19 |RT |M |mask |BFA | 0 0 |1 mode |00011 |Rc|crrweird |
-|19 |RT |M |mask |BFA | 0 1 |1 mode |00011 |Rc|mfcrweird |
-|19 |RA |M |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 |RT |M |mask |BFA | 0 0 |0 mode |00011 |Rc|crrweird |
+|19 |RT |M |mask |BFA | 0 1 |0 mode |00011 |Rc|mfcrweird |
+|19 |RA |M |mask |BF | 1 0 |0 mode |00011 |0 |mtcrrweird |
+|19 |RA |M |mask |BF | 1 0 |0 mode |00011 |1 |mtcrweird |
+|19 |BT |M |mask |BFA | 1 1 |0 mode |00011 |0 |crweirder |
|19 |BF //|M |mask |BFA | 1 1 |0 mode |00011 |1 |mcrfm |
**crrweird**
mode is encoded in XO and is 4 bits
-bit 19=0, bit 20=0
-
crrweird: RT, BFA, M, mask.mode
creg = CR{BFA}
mode is encoded in XO and is 4 bits
-bit 19=0, bit 20=0
-
mfcrrweird: RT, BFA, mask.mode
creg = CR{BFA}
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])
**mtcrweird**
-bit 19=0, bit 20=1
-
mtcrweird: BF, RA, M, mask.mode
reg = (RA|0)
type operation that has 3-bit Data-dependent and 3-bit Predicate-result
capability (BF is 3 bits)
-**crweird**
-
-bit 19=1, bit 20=0, bit 30=0
-
- crweird: BF, BFA, M, 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
- if M:
- result |= CR{BF} & ~mask
- CR{BF} = result
-
-Note that when M=1 this operation is a Read-Modify-Write on the CR Field
-BF. Masked-out bits of the 4-bit CR Field BF will not be changed when
-M=1. Correspondingly when M=0 this operation is an overwrite: no read
-of BF is required because the masked-out bits of the BF CR Field are
-set to zero.
-
-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 (BF is 3 bits)
-
**mcrfm** - Move CR Field, masked.
-bit 19=1, bit 20=0, bit 30=1
-
mcrfm: BF, BFA, M, mask.mode
result = mask & CR{BFA}
**crweirder**
-bit 19=1, bit 20=1
-
crweirder: BT, BFA, mask.mode
creg = CR{BFA}