subfe
Subtract from Extended - 7C 00 00 51
subfe

Instruction Syntax

Mnemonic Format Flags
subfe rD,rA,rB OE = 0, Rc = 0
subfe. rD,rA,rB OE = 0, Rc = 1
subfeo rD,rA,rB OE = 1, Rc = 0
subfeo. rD,rA,rB OE = 1, Rc = 1

Instruction Encoding

0
1
1
1
1
1
D
D
D
D
D
A
A
A
A
A
B
B
B
B
B
OE
0
1
0
1
0
0
0
0
1
Rc

Field Bits Description
Primary Opcode 0-5 011111 (0x1F)
rD 6-10 Destination register
rA 11-15 Source register A
rB 16-20 Source register B
OE 21 Overflow Exception
XO 22-29 41 (Extended opcode)
Rc 30-31 Record Condition Register

Operation

rD ← (rB) - (rA) + XER[CA]

The value in rA is subtracted from the value in rB, the carry bit is added, and the result is placed into rD. The carry bit is updated based on the result.

Note: The subfe instruction performs subtraction with extended carry. If OE = 1, overflow exceptions are enabled. If Rc = 1, the condition register is updated.

Affected Registers

Condition Register (CR0 field)

(if Rc = 1)

Note: CR0 field may not reflect the infinitely precise result if overflow occurs (see XER below).

XER (Exception Register)

(if OE = 1)

For more information on condition codes see Section 2.1.3, "Condition Register," and Section 2.1.5, "XER Register," in the PowerPC Microprocessor Family: The Programming Environments manual.

Examples

Basic Subtraction with Extended Carry

subfe r3, r1, r2     # r3 = r2 - r1 + CA
subfe. r3, r1, r2    # Same as above, but also sets condition register

Simple Arithmetic

# Subtract two values with extended carry and store result
lwz r4, 0(r10)     # Load first value
lwz r5, 4(r10)     # Load second value  
subfe r6, r4, r5     # Subtract values with extended carry

Overflow Detection

subfeo r3, r1, r2    # Subtract with extended carry and overflow exception enabled
# If overflow occurs, an exception is raised

Related Instructions

subf, subfc, subfic, subfme, subfze

Back to Index