xxmfacc

VSX Move from Accumulator

xxmfacc AT

Copies data from an Accumulator back to 4 adjacent VSRs.

Details

For xxmfacc, the contents of row i of ACC[AS] are placed into VSR[4×AS+i]. The contents of ACC[0] will be undefined after the first execution, which can degrade performance on subsequent executions.

Pseudocode Operation

if MSR.VSX=0 then VSX_Unavailable()
for each integer value i from 0 to 3 do
    VSR[4×AS+i] ← ACC[AS][i]

Programming Note

During extended periods of execution when there isn't any active use of the accumulators and VSX Vector GER instructions, hardware may deactivate these facilities for power savings. Once deactivated, while any attempted execution of any xxmfacc, xxmtacc, xxsetaccz, or VSX Vector GER instruction will cause these facilities to become reactivated, this reactivation causes significant delay beyond the normal execution of these instructions. This delay can be avoided by periodically issuing an xxmfacc with AS=0 instruction during extended times that the facilities are not being used to keep the facilities activated. Since the contents of ACC[0] will be undefined after the first execution, performance on subsequent executions of xxmfacc 0 can be expected to be degraded compared to performance when the contents of ACC[0] are defined. As such, to keep the facilities activated, xxmfacc 0 should be used with attention to performance implications.

Example

xxmfacc acc0

Encoding

Binary Layout
31
0
/
6
/
9
AT
11
185
/
 
Format X-form
Opcode 0x7C000171
Extension MMA
Registers Altered MSR

Operands

  • AT
    Source ACC
  • AS
    Accumulator Select