File: opaque-vector.c

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (32 lines) | stat: -rw-r--r-- 979 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#define B_TEST(TYPE) { TYPE v __attribute__((vector_size(16))); (void)((v < v) < v); }
#ifdef __cplusplus
#define T_TEST(TYPE) { TYPE s; TYPE v __attribute__((vector_size(16))); __typeof((v<v)[0]) iv __attribute__((vector_size(16))); (void)((iv ? s : s) < v); }
#else
#define T_TEST(TYPE)
#endif
#define T(TYPE) B_TEST(TYPE) T_TEST(TYPE)
#ifdef __SIZEOF_INT128__
#define SIZEOF_MAXINT __SIZEOF_INT128__
#else
#define SIZEOF_MAXINT __SIZEOF_LONG_LONG__
#endif

void f ()
{
  T(short)
  T(int)
  T(long)
  T(long long)

  T_TEST(float)
  T_TEST(double)
  /* Avoid trouble with non-power-of-two sizes.
     Also avoid trouble with long double larger than integral types.  */
#if !defined(__i386__) && !defined(__x86_64__) && !defined(__m68k__) \
    && !defined(__ia64__) && !defined(__hppa__) \
    && (__SIZEOF_LONG_DOUBLE__ & (__SIZEOF_LONG_DOUBLE__ - 1)) == 0 \
    && __SIZEOF_LONG_DOUBLE__ <= 16 \
    && __SIZEOF_LONG_DOUBLE__ <= SIZEOF_MAXINT
  T_TEST(long double)
#endif
}