Download RealView Compilation Tools Compiler Reference Guide

Transcript
Compiler-specific Features
4.7.48
ARMv6 SIMD instruction intrinsics and APSR GE flags
Table 4-18
Intrinsic
APSR.GE flag action
APSR.GE operation
__sel
Reads GE flags
if APSR.GE[0] == 1 then res[7:0] = val1[7:0] else val2[7:0]
if APSR.GE[1] == 1 then res[15:8] = val1[15:8] else val2[15:8]
if APSR.GE[2] == 1 then res[23:16] = val1[23:16] else val2[23:16]
if APSR.GE[3] == 1 then res[31:24] = val1[31:24] else val2[31:24]
__sadd16
Sets or clears GE flags
if sum1 ≥ 0 then APSR.GE[1:0] = 11 else 00
if sum2 ≥ 0 then APSR.GE[3:2] = 11 else 00
__sadd8
Sets or clears GE flags
if sum1 ≥ 0 then APSR.GE[0] = 1 else 0
if sum2 ≥ 0 then APSR.GE[1] = 1 else 0
if sum3 ≥ 0 then APSR.GE[2] = 1 else 0
if sum4 ≥ 0 then APSR.GE[3] = 1 else 0
__sasx
Sets or clears GE flags
if diff ≥ 0 then APSR.GE[1:0] = 11 else 00
if sum ≥ 0 then APSR.GE[3:2] = 11 else 00
__ssax
Sets or clears GE flags
if sum ≥ 0 then APSR.GE[1:0] = 11 else 00
if diff ≥ 0 then APSR.GE[3:2] = 11 else 00
__ssub16
Sets or clears GE flags
if diff1 ≥ 0 then APSR.GE[1:0] = 11 else 00
if diff2 ≥ 0 then APSR.GE[3:2] = 11 else 00
__ssub8
Sets or clears GE flags
if diff1 ≥ 0 then APSR.GE[0] = 1 else 0
if diff2 ≥ 0 then APSR.GE[1] = 1 else 0
if diff3 ≥ 0 then APSR.GE[2] = 1 else 0
if diff4 ≥ 0 then APSR.GE[3] = 1 else 0
__uadd16
Sets or clears GE flags
if sum1 ≥ 0x10000 then APSR.GE[1:0] = 11 else 00
if sum2 ≥ 0x10000 then APSR.GE[3:2] = 11 else 00
__uadd8
Sets or clears GE flags
if sum1 ≥ 0x100 then APSR.GE[0] = 1 else 0
if sum2 ≥ 0x100 then APSR.GE[1] = 1 else 0
if sum3 ≥ 0x100 then APSR.GE[2] = 1 else 0
if sum4 ≥ 0x100 then APSR.GE[3] = 1 else 0
__uasx
Sets or clears GE flags
if diff ≥ 0 then APSR.GE[1:0] = 11 else 00
if sum ≥ 0x10000 then APSR.GE[3:2] = 11 else 00
4-118
Copyright © 2007-2010 ARM. All rights reserved.
Non-Confidential,
ARM DUI 0348C
ID101213