Specifications
Usage
Carry Detection (unsigned operands):
Following an addi operation, a carry out of the MSB can be
detected by checking whether the unsigned sum is less than one
of the unsigned operands. The carry bit can be written to a
register, or a conditional branch can be taken based on the
carry condition. The following code shows both cases:
addi rB, rA, IMM16
cmpltu rD, rB, rA
addi rB, rA, IMM16
bltu rB, rA, label
# The original add operation
# rD is written with the carry bit
# The original add operation
# Branch if carry generated
Overflow Detection (signed operands):
An overflow is detected when two positives are added and the
sum is negative, or when two negatives are added and the sum
is positive. The overflow condition can control a conditional
branch, as shown in the following code:
addi rB, rA, IMM16
xor rC, rB, rA
xorhi rD, rB, IMM16
and rC, rC, rD
blt rC, r0,label
# The original add operation
# Compare signs of sum and rA
# Compare signs of sum and IMM16
# Combine comparisons
# Branch if overflow occurred
Exceptions
None
Instruction Type
I
Instruction Fields
A = Register index of operand rA
B = Register index of operand rB
IMM16 = 16-bit signed immediate value
NII51017
2015.04.02
addi
8-9
Instruction Set Reference
Altera Corporation
Send Feedback