18.36 NEON instructions without equivalent intrinsics

Most NEON instructions have an equivalent NEON intrinsic, however a small subset of instructions do not.

Even though these NEON instructions do not have equivalent intrinsics, their behavior can still be expressed either by using different intrinsics or standard C operations. See the following table for a list of NEON instructions that do not have an equivalent intrinsic:

Table 18-2 NEON instructions without equivalent intrinsics

NEON instruction Alternative

VBIF

VBIT

The vbsl* intrinsics compile to any of VBSL/VBIF/VBIT depending on register allocation.

VLDM

VLDR

VSTM

VSTR

The compiler generates these instructions automatically as appropriate for accesses to floating-point and vector data types.

VMRS

VMSR

Use the named register variable __asm("fpscr") to access the Floating-Point Status and Control Register (FPSCR). Using the named register variable causes the compiler to emit VMRS/VMSR instructions as required.

VPOP

VPUSH

These instructions are used for saving and restoring callee-saved registers. The compiler generates them automatically at function entry and exit as appropriate for the registers used in the function.
VSWP This instruction has no benefit as an intrinsic because intrinsics use variables to encapsulate register allocation and access. As a result. swapping of variables can be performed using simple C-style variable assignments.
Related reference
18.4 NEON intrinsics for addition
18.5 NEON intrinsics for multiplication
18.6 NEON intrinsics for subtraction
18.7 NEON intrinsics for comparison
18.8 NEON intrinsics for absolute difference
18.9 NEON intrinsics for maximum and minimum
18.10 NEON intrinsics for pairwise addition
18.11 NEON intrinsics for folding maximum
18.12 NEON intrinsics for folding minimum
18.13 NEON intrinsics for reciprocal and sqrt
18.14 NEON intrinsics for shifts by signed variable
18.15 NEON intrinsics for shifts by a constant
18.16 NEON intrinsics for shifts with insert
18.17 NEON intrinsics for loading a single vector or lane
18.18 NEON intrinsics for storing a single vector or lane
18.19 NEON intrinsics for loading an N-element structure
18.20 NEON intrinsics for extracting lanes from a vector into a register
18.21 NEON intrinsics for loading a single lane of a vector from a literal
18.22 NEON intrinsics for initializing a vector from a literal bit pattern
18.23 NEON intrinsics for setting all lanes to the same value
18.24 NEON intrinsics for combining vectors
18.25 NEON intrinsics for splitting vectors
18.26 NEON intrinsics for converting vectors
18.27 NEON intrinsics for table look up
18.28 NEON intrinsics for extended table look up
18.29 NEON intrinsics for operations with a scalar value
18.30 NEON intrinsics for vector extraction
18.31 NEON intrinsics for reversing vector elements (swap endianness)
18.32 NEON intrinsics for other single operand arithmetic
18.33 NEON intrinsics for logical operations
18.34 NEON intrinsics for transposition operations
18.35 NEON intrinsics for vector cast operations
Non-ConfidentialPDF file icon PDF versionARM DUI0472J
Copyright © 2010-2013 ARM. All rights reserved.