35.3.1.9. INTEGER ARITHMETICAL ON IA64
Format A1 Format A2 Format A3
------------ + ------------- + ------------
40..37 8 40..37 8 40..37 8
36 -- 36 -- 36 S
35..34 X2a 35..34 X2a 35..34 X2a
33 Ve 33 Ve 33 Ve
32..29 X4 32..29 X4 32..29 X4
28..27 X2b 28..27 CT2d 28..27 X2b
26..20 R3 26..20 R3 26..20 R3
19..13 R2 19..13 R2 19..13 Imm7b
12..6 R1 12..6 R1 12..6 R1
5..0 QP 5..0 QP 5..0 QP
------------ + -------------- + -------------
Format A4 Format A5
------------ + ------------
40..37 8 40..37 9
36 S 36 S
35..34 X2a 35..27 Imm9d
33 Ve 26..22 Imm5c
32..27 Imm6d 21..20 r3
26..20 R3 19..13 Imm7b
19..13 Imm7b 12..6 R1
12..6 R1 5..0 QP
5..0 QP1
------------ + -------------
add r1=r2,r3 A1 8.0.0.0.0
r1 <- r2 + r3
add r1=r2,r3,1 A1 8.0.0.0.1
r1 <- r2 + r3 + 1
adds r1=imm14,r3 A4 8.2.0 r1 <- sext(imm14) + r3
addl r1=imm22,r3 A5 9 r1 <- sext(imm22) + r3
addp4 r1=r2,r3 A1 8.0.0.2.0 Add Pointer
addp4 r1=imm14,r3 A4 8.3.0 Add Pointer
shladd r1=r2,cnt2,r3 A2 8.0.0.4 r1 <- (r2 << cnt2) + r3
shladdp4 r1=r2,cnt2,r3 A2 8.0.0.6 Shift Left and Add Pointer
sub r1=r2,r3 A1 8.0.0.1.1
r1 <- r2 - r3
sub r1=r2,r3,1 A1 8.0.0.1.0
r1 <- r2 - r3 - 1
sub r1=imm8,r3 A3 8.0.0.9.1
r1 <- sext(imm8) - r3
Note:
xma.l/xma.lu/xma.h/xma.hu - Fixed Point Multiply Add
xmpy.l/xmpy.lu/xmpy.h/xmpy.hu - Fixed Point Multiply
(both are on float registers)
Note: All other Integer operations such as Multiply, Divide, Negate
are complex operations.
Add with carry look like
(predicate) add r1=r2,r3
(predicate) add r1=r2,r3,1
So, execution use predicates for select way, on which this instruction
will be executed.
// ----------------------------------------------------------------------
Index Prev Next