-[[!tag standards]]
-
# New instructions for CR/INT predication
**DRAFT STATUS**
* <https://bugs.libre-soc.org/show_bug.cgi?id=527>
* <https://bugs.libre-soc.org/show_bug.cgi?id=569>
* <https://bugs.libre-soc.org/show_bug.cgi?id=558#c47>
+* [[discussion]]
Rationale:
Please see [[svp64/appendix]] regarding CR bit ordering and for
the definition of `CR{n}`
+----------
+
+\newpage{}
+
# Instruction form and pseudocode
**DRAFT** Instruction format (use of MAJOR 19 not approved by
mtcrset BF, fmsk mtcrweird BF, r0, 1, fmsk,0b0000
mtcrclr BF, fmsk mtcrweird BF, r0, 1, fmsk,0b1111
+----------
+
+\newpage{}
+
# Vectorised versions involving GPRs
The name "weird" refers to a minor violation of SV rules when it comes
idx, boff = 0, i
iregs[RT+idx][60-boff*4:63-boff*4] = result
-# v3.1 setbc instructions
-
-There are additional setb conditional instructions in v3.1 (p129)
-
- RT = (CR[BI] == 1) ? 1 : 0
-
-which also negate that, and also return -1 / 0. these are similar to
-crweird but not the same purpose. most notable is that crweird acts on
-CR fields rather than the entire 32 bit CR.
-
# Predication Examples
Take the following example:
example, it becomes possible to combine two Integers together in order
to set bits in CR Fields. Likewise there are dozens of ways that CR
Predicates can be used, on the same sv.mtcrweird instruction.
+
+
+[[!tag standards]]
+----------
+
+\newpage{}
--- /dev/null
+# v3.1 setbc instructions
+
+There are additional setb conditional instructions in v3.1 (p129)
+
+ RT = (CR[BI] == 1) ? 1 : 0
+
+which also negate that, and also return -1 / 0. these are similar to
+crweird but not the same purpose. most notable is that crweird acts on
+CR fields rather than the entire 32 bit CR.
+
+