Programmer’s Model
ARM DDI 0301H Copyright © 2004-2009 ARM Limited. All rights reserved. 2-26
ID012310 Non-Confidential, Unrestricted Access
• The placement of the J bit avoids the status or extension bytes in code running on
ARMv5TE or earlier processors. This ensures that OS code written using the deprecated
CPSR, SPSR, CPSR_all, or SPSR_all syntax for the destination of an MSR instruction
continues to work.
2.10.4 The GE[3:0] bits
Some of the SIMD instructions set GE[3:0] as greater-than-or-equal bits for individual
halfwords or bytes of the result. Table 2-6 lists these.
Note
GE bit is 1 if A op B ≥ C, otherwise 0.
The SEL instruction uses GE[3:0] to select the source register that supplies each byte of its
result.
Note
• For unsigned operations, the GE bits are determined by the usual ARM rules for carries
out of unsigned additions and subtractions, and so are carry-out bits.
• For signed operations, the rules for setting the GE bits are chosen so that they have the
same sort of greater than or equal functionality as for unsigned operations.
Table 2-6 GE[3:0] settings
GE[3] GE[2] GE[1] GE[0]
Instruction A op B >= C A op B >= C A op B >= C A op B >= C
Signed
SADD16 [31:16] + [31:16] ≥ 0 [31:16] + [31:16] ≥ 0 [15:0] + [15:0] ≥ 0 [15:0] + [15:0] ≥ 0
SSUB16 [31:16] - [31:16] ≥ 0 [31:16] - [31:16] ≥ 0 [15:0] - [15:0] ≥ 0 [15:0] - [15:0] ≥ 0
SADDSUBX [31:16] + [15:0] ≥ 0 [31:16] + [15:0] ≥ 0 [15:0] - [31:16] ≥ 0 [15:0] - [31:16] ≥ 0
SSUBADDX [31:16] - [15:0] ≥ 0 [31:16] - [15:0] ≥ 0 [15:0] + [31:16] ≥ 0 [15:0] + [31:16] ≥ 0
SADD8 [31:24] + [31:24] ≥ 0 [23:16] + [23:16] ≥ 0 [15:8] + [15:8] ≥ 0 [7:0] + [7:0] ≥ 0
SSUB8 [31:24] - [31:24] ≥ 0 [23:16] - [23:16] ≥ 0 [15:8] - [15:8] ≥ 0 [7:0] - [7:0] ≥ 0
Unsigned
UADD16
[31:16] + [31:16] ≥ 2
16
[31:16] + [31:16] ≥ 2
16
[15:0] + [15:0] ≥ 2
16
[15:0] + [15:0] ≥ 2
16
USUB16 [31:16] - [31:16] ≥ 0 [31:16] - [31:16] ≥ 0 [15:0] - [15:0] ≥ 0 [15:0] - [15:0] ≥ 0
UADDSUBX
[31:16] + [15:0] ≥ 2
16
[31:16] + [15:0] ≥ 2
16
[15:0] - [31:16] ≥ 0 [15:0] - [31:16] ≥ 0
USUBADDX [31:16] - [15:0] ≥ 0 [31:16] - [15:0] ≥ 0
[15:0] + [31:16] ≥ 2
16
[15:0] + [31:16] ≥2
16
UADD8
[31:24] + [31:24] ≥ 2
8
[23:16] + [23:16] ≥ 2
8
[15:8] + [15:8] ≥ 2
8
[7:0] + [7:0] ≥ 2
8
USUB8 [31:24] - [31:24] ≥ 0 [23:16] - [23:16] ≥ 0 [15:8] - [15:8] ≥ 0 [7:0] - [7:0] ≥ 0