aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/arm/builtin-bswap-1.c
blob: 43195bd8235b492a3c4783d88bf744ac92ee9f68 (plain)
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-require-effective-target arm_arch_v6_ok } */
/* { dg-add-options arm_arch_v6 } */
/* { dg-final { scan-assembler-not "orr\[ \t\]" } } */
/* { dg-final { scan-assembler-times "revsh\\t" 1 { target { arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "revshne\\t" 1 { target { arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "revsh\\t" 2 { target { ! arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "rev16\\t" 1 { target { arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "rev16ne\\t" 1 { target { arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "rev16\\t" 2 { target { ! arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "rev\\t" 2 { target { arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "revne\\t" 2 { target { arm_nothumb } } } }  */
/* { dg-final { scan-assembler-times "rev\\t" 4 { target { ! arm_nothumb } } } }  */

/* revsh */
short swaps16 (short x)
{
  return __builtin_bswap16 (x);
}

extern short foos16 (short);

/* revshne */
short swaps16_cond (short x, int y)
{
  short z = x;
  if (y)
    z = __builtin_bswap16 (x);
  return foos16 (z);
}

/* rev16 */
unsigned short swapu16 (unsigned short x)
{
  return __builtin_bswap16 (x);
}

extern unsigned short foou16 (unsigned short);

/* rev16ne */
unsigned short swapu16_cond (unsigned short x, int y)
{
  unsigned short z = x;
  if (y)
    z = __builtin_bswap16 (x);
  return foou16 (z);
}

/* rev */
int swaps32 (int x) {
  return __builtin_bswap32 (x);
}

extern int foos32 (int);

/* revne */
int swaps32_cond (int x, int y)
{
  int z = x;
  if (y)
    z = __builtin_bswap32 (x);
  return foos32 (z);
}

/* rev */
unsigned int swapu32 (unsigned int x)
{
  return __builtin_bswap32 (x);
}

extern unsigned int foou32 (unsigned int);

/* revne */
unsigned int swapsu2 (unsigned int x, int y)
{
  int z = x;
  if (y)
    z = __builtin_bswap32 (x);
  return foou32 (z);
}