6.60.16 MIPS SIMD Architecture (MSA) Support

GCC provides intrinsics to access the SIMD instructions provided by the MSA MIPS SIMD Architecture. The interface is made available by including <msa.h> and using -mmsa -mhard-float -mfp64 -mnan=2008 . For each __builtin_msa_* , there is a shortened name of the intrinsic, __msa_* .

MSA implements 128-bit wide vector registers, operating on 8-, 16-, 32- and 64-bit integer, 16- and 32-bit fixed-point, or 32- and 64-bit floating point data elements. The following vectors typedefs are included in msa.h :

Instructions and corresponding built-ins may have additional restrictions and/or input/output values manipulated:

     {
     typedef int i32;
     #if __LONG_MAX__ == __LONG_LONG_MAX__
     typedef long i64;
     #else
     typedef long long i64;
     #endif
     
     typedef unsigned int u32;
     #if __LONG_MAX__ == __LONG_LONG_MAX__
     typedef unsigned long u64;
     #else
     typedef unsigned long long u64;
     #endif
     
     typedef double f64;
     typedef float f32;
     }