aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/powerpc/parall_5insn_const.c
blob: e3a9a7264cf691a4c92f617acfb2695a3d741010 (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
/* { dg-do run } */
/* { dg-options "-O2 -mno-prefixed -save-temps" } */
/* { dg-require-effective-target has_arch_ppc64 } */

/* { dg-final { scan-assembler-times {\mlis\M} 4 } } */
/* { dg-final { scan-assembler-times {\mori\M} 4 } } */
/* { dg-final { scan-assembler-times {\mrldimi\M} 2 } } */

void __attribute__ ((noinline)) foo (unsigned long long *a)
{
  /* 2 lis + 2 ori + 1 rldimi for each constant.  */
  *a++ = 0x800aabcdc167fa16ULL;
  *a++ = 0x7543a876867f616ULL;
}

long long A[] = {0x800aabcdc167fa16ULL, 0x7543a876867f616ULL};
int
main ()
{
  long long res[2];

  foo (res);
  if (__builtin_memcmp (res, A, sizeof (res)) != 0)
    __builtin_abort ();

  return 0;
}