SPRUI04G June 2015 – August 2025
When using the __x128_t container type, or __float2_t typedef, or any intrinsics involving __float2_t, you must include c6x.h.
| C/C++ Compiler Intrinsic | Description |
|---|---|
| Creation | |
| __x128_t _ito128 (unsigned src1, unsigned src2, unsigned src3, unsigned src4); | Creates __x128_t from (u)int (reg+3, reg+2, reg+1, reg+0) |
| __x128_t _fto128 (float src1, float src2, float src3, float src4); | Creates __x128_t from float (reg+3, reg+2, reg+1, reg+0) |
| __x128_t _llto128 (long long src1, long long src2); | Creates __x128_t from two long longs |
| __x128_t _dto128 (double src1, double src2); | Creates __x128_t from two doubles |
| __x128_t _f2to128(__float2_t src1, __float2_t src2); | Creates __x128_t from two __float2_t objects. This is defined as a macro. You must include c6x.h. |
| __x128_t _dup32_128 (int src); | Creates __x128_t from duplicating src1 |
| __float2_t _ftof2(float src1, float src2); | Creates __float2_t from two floats. This is defined as a macro. You must include c6x.h. |
| Extraction | |
| float _hif (double src); | Extracts upper float from double |
| float _lof (double src); | Extracts lower float from double |
| float _hif2(__float2_t src); | Extracts upper float from __float2_t. This is defined as a macro. You must include c6x.h. |
| float _lof2(__float2_t src); | Extracts lower float from __float2_t. This is defined as a macro. You must include c6x.h. |
| long long _hi128 (__x128_t src); | Extracts upper two registers of register quad |
| double _hid128 (__x128_t src); | Extracts upper two registers of register quad |
| __float2_t _hif2_128(__x128_t src); | Extracts upper two registers of register quad. This is defined as a macro. You must include c6x.h. |
| long long _lo128 (__x128_t src); | Extracts lower two registers of register quad |
| double _lod128 (__x128_t src); | Extracts lower two registers of register quad |
| __float2_t _lof2_128(__x128_t src); | Extracts lower two registers of register quad. This is defined as a macro. You must include c6x.h. |
| unsigned _get32_128 (__x128_t src, 0); | Extracts first register of register quad (base reg + 0) |
| unsigned _get32_128 (__x128_t src, 1); | Extracts second register of register quad (base reg + 1) |
| unsigned _get32_128 (__x128_t src, 2); | Extracts third register of register quad (base reg + 2) |
| unsigned _get32_128 (__x128_t src, 3); | Extracts fourth register of register quad (base reg + 3) |
| float _get32f_128 (__x128_t src, 0); | Extracts first register of register quad (base reg + 0) |
| float _get32f_128 (__x128_t src, 1); | Extracts second register of register quad (base reg + 1) |
| float _get32f_128 (__x128_t src, 2); | Extracts third register of register quad (base reg + 2) |
| float _get32f_128 (__x128_t src, 3); | Extracts fourth register of register quad (base reg + 3) |