RealView Compilation Tools Compiler Reference Guide - ARM ...
RealView Compilation Tools Compiler Reference Guide - ARM ...
RealView Compilation Tools Compiler Reference Guide - ARM ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Compiler</strong>-specific Features<br />
Note<br />
Each <strong>ARM</strong>v6 SIMD intrinsic is guaranteed to be compiled into a single, inline, machine<br />
instruction for an <strong>ARM</strong> v6 architecture or processor. However, the compiler might use<br />
optimized forms of underlying instructions when it detects opportunities to do so.<br />
The <strong>ARM</strong>v6 SIMD instructions can set the GE[3:0] bits in the Application Program<br />
Status Register (APSR). The SIMD instructions might update these flags to indicate the<br />
“greater than or equal to” status of each 8/16-bit slice of a SIMD operation.<br />
The <strong>ARM</strong> compiler treats the GE[3:0] bits as a global variable. To access these bits from<br />
within your C or C++ program, either:<br />
• access bits 16-19 of the APSR through a named register variable<br />
• use the __sel intrinsic to control a SEL instruction.<br />
unsigned int __qadd16(unsigned int, unsigned int)<br />
unsigned int __qadd8(unsigned int, unsigned int)<br />
unsigned int __qasx(unsigned int, unsigned int)<br />
unsigned int __qsax(unsigned int, unsigned int)<br />
unsigned int __qsub16(unsigned int, unsigned int)<br />
unsigned int __qsub8(unsigned int, unsigned int)<br />
unsigned int __sadd16(unsigned int, unsigned int)<br />
unsigned int __sadd8(unsigned int, unsigned int)<br />
unsigned int __sasx(unsigned int, unsigned int)<br />
unsigned int __sel(unsigned int, unsigned int)<br />
unsigned int __shadd16(unsigned int, unsigned int)<br />
unsigned int __shadd8(unsigned int, unsigned int)<br />
unsigned int __shasx(unsigned int, unsigned int)<br />
unsigned int __shsax(unsigned int, unsigned int)<br />
unsigned int __shsub16(unsigned int, unsigned int)<br />
unsigned int __shsub8(unsigned int, unsigned int)<br />
unsigned int __smlad(unsigned int, unsigned int, unsigned int)<br />
unsigned long long __smlald(unsigned int, unsigned int, unsigned long long)<br />
unsigned int __smlsd(unsigned int, unsigned int, unsigned int)<br />
unsigned long long __smlsld(unsigned int, unsigned int, unsigned long long)<br />
unsigned int __smuad(unsigned int, unsigned int)<br />
unsigned int __smusd(unsigned int, unsigned int)<br />
unsigned int __ssat16(unsigned int, unsigned int)<br />
unsigned int __ssax(unsigned int, unsigned int)<br />
unsigned int __ssub16(unsigned int, unsigned int)<br />
unsigned int __ssub8(unsigned int, unsigned int)<br />
unsigned int __sxtab16(unsigned int, unsigned int)<br />
unsigned int __sxtb16(unsigned int, unsigned int)<br />
unsigned int __uadd16(unsigned int, unsigned int)<br />
unsigned int __uadd8(unsigned int, unsigned int)<br />
unsigned int __uasx(unsigned int, unsigned int)<br />
unsigned int __uhadd16(unsigned int, unsigned int)<br />
unsigned int __uhadd8(unsigned int, unsigned int)<br />
4-96 Copyright © 2007, 2010 <strong>ARM</strong> Limited. All rights reserved. <strong>ARM</strong> DUI 0348A<br />
Non-Confidential