3 this tells us the conditions under which these bits need to be set.
4 it therefore defines which registers - where each bit of XER *is*
5 a separate register - is to be covered by Dependency Matrices.
7 notation: "COUT" means "carry out bit from result". therefore COUT[M]
8 means "the carry out bit in position 32 or 64 of the result". therefore
9 in add/subtract this means "the result bit in position 33 or 65".
12 - addex does not alter SO except when CY=0
13 - Compare does not alter SO
14 - any other non-overflowing operation (TBD)
17 - XO-form ADD/SUBF/NEG (when OE=1) set OV to test "COUT[M]!=COUT[M+1]"
18 - addex (when CY=0) set OV to COUT[M]
19 - XO-form MUL/DIV (when OE=1) set OV="can result fit in target 32/64"
20 - not altered by Compare
23 - add carrying, sub-from carrying, addex, subex - set CA to COUT[M]
24 - sra - set CA to "any 1-bits shifted out of a negative operand"
25 - not altered by Compare
26 - not altered by anything that cannot carry
29 - set whenever OV is set, computed explicitly from 32-bit rather than M-bit
31 - set whenever OV is set, computed explicitly from 32-bit rather than M-bit
34 # Condition Register Pipeline
38 64 - Port 1 32 - Port 2
39 ----------- -----------
45 64 - Port 1 32 - Port 2
46 ----------- -----------
49 # SPR Register Pipeline
53 # TRAP Register Pipeline
57 # MUL Register Pipeline
61 # DIV/MOD Register Pipeline
65 # Branch Register Pipeline
69 insn PC 32-CR 64-SPR1 64-SPR2
80 op_bclrl CIA CR LR CTR
81 op_bcctr CIA CR xx CTR
82 op_bcctrl CIA CR xx CTR
83 op_bctar CIA CR TAR CTR
84 op_bctarl CIA CR TAR CTR
105 # System Call Pipeline
109 insn PC 32-CR 64-SPR1 64-SPR2 MSR
110 ---- -- -- ---- ---- --
112 op_sc CIA xx xx xx MSR
113 op_scv CIA xx LR SRR1 MSR
114 op_rfscv CIA xx LR CTR MSR
115 op_rfid CIA xx SRR0 SRR1 MSR
116 op_hrfid CIA xx HSRR0 HSRR1 MSR
121 insn PC LR 64-SPR2 MSR
126 op_rfscv NIA LR CTR MSR
127 op_rfid NIA xx xx MSR
128 op_hrfid NIA xx xx MSR
131 # Logical Register Pipeline
135 64 - Port 1 64 - Port 2 1 - SO 1 - Carry
136 ----------- ----------- ------ ---------
142 64 - Port 1 4 - Port 2 1 - SO 2 - Carry/Carry32 2 - OV/OV32
143 ----------- ----------- ------ ----------------- -----------
144 RC/RT CR0 so cr_o / cr32_o ov_o / ov32_o
147 # Arithmetic Register Pipeline
151 64 - Port 1 64 - Port 2 1 - SO 1 - Carry
152 ----------- ----------- ------ ---------
153 RA RB/immed so carry_in
158 64 - Port 1 4 - Port 2 1 - SO 2 - Carry/Carry32 2 - OV/OV32
159 ----------- ----------- ------ ----------------- -----------
160 RC/RT CR0 so cr_o / cr32_o ov_o / ov32_o
163 # Shift Register Pipeline
167 64 - Port 1 64 - Port 2 64 - Port 3 1 - SO 1 - Carry
168 ----------- ----------- ----------- ------ ---------
169 RA RB/immed RS so carry_in
174 64 - Port 1 4 - Port 2 1 - SO 2 - Carry/Carry32 2 - OV/OV32
175 ----------- ----------- ------ ----------------- -----------
176 RC/RT CR0 so cr_o / cr32_o ov_o / ov32_o