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