Divides the contents of a general-purpose register by the contents of a general-purpose register and stores the result in a general-purpose register.
Note: The divs instruction is supported only in the POWER architecture.
POWER | |
---|---|
divs | RT,RA,RB |
divs. | RT,RA,RB |
divso | RT,RA,RB |
divso. | RT,RA,RB |
The divs instruction divides the contents of general-purpose register (GPR) RA by the contents of GPR RB and stores the result in the target GPR RT. The remainder has the same sign as the dividend, except that a zero quotient or a zero remainder is always positive. The results obey the equation:
dividend = (divisor x quotient) + remainder
where a dividend is the original (RA), divisor is the original (RB), quotient is the final (RT), and remainder is the final (MQ).
For the case of -2**31 P -1 , the MQ Register is set to 0 and -2**31 is placed in GPR RT. For all other overflows, the contents of MQ, the target GPR RT and the Condition Register Field 0 (if the Record Bit (Rc) is 1) are undefined.
The divs instruction has four syntax forms. Each syntax form has a different effect on Condition Register Field 0 and the Fixed-Point Exception Register.
Syntax Form | Overflow Exception (OE) | Fixed-Point Exception Register | Record Bit (Rc) | Condition Register Field 0 |
divs | 0 | None | 0 | None |
divs. | 0 | None | 1 | LT,GT,EQ,SO |
divso | 1 | SO,OV | 0 | None |
divso. | 1 | SO,OV | 1 | LT,GT,EQ,SO |
The four syntax forms of the divs instruction never affect the Carry bit (CA) in the Fixed-Point Exception Register. If the syntax form sets the Overflow Exception (OE) bit to 1, the instruction affects the Summary Overflow (SO) and Overflow (OV) bits in the Fixed-Point Exception Register. If the syntax form sets the Record (Rc) bit to 1, the instruction affects the Less Than (LT) zero, Greater Than (GT) zero, Equal To (EQ) zero, and Summary Overflow (SO) bits in Condition Register Field 0.
# Assume GPR 4 contains 0x0000 0001. # Assume GPR 6 contains 0x0000 0002. divs 4,4,6 # GPR 4 now contains 0x0. # The MQ Register now contains 0x1.
# Assume GPR 4 contains 0x0000 0002. # Assume GPR 6 contains 0x0000 0002. divs. 4,4,6 # GPR 4 now contains 0x0000 0001. # The MQ Register now contains 0x0000 0000.
# Assume GPR 4 contains 0x0000 0001. # Assume GPR 6 contains 0x0000 0000. divso 4,4,6 # GPR 4 now contains an undefined quantity.
# Assume GPR 4 contains 0x-1. # Assume GPR 6 contains 0x0000 00002. # Assume the MQ Register contains 0x0000 0000. divso. 4,4,6 # GPR 4 now contains 0x0000 0000. # The MQ register contains 0x-1.
Fixed-Point Arithmetic Instructions.