OSDN Git Service

2010-12-30 Kai Tietz <kai.tietz@onevision.com>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.target / mips / int-moves-2.c
1 /* { dg-options "(-mips16) -mgp64 -O2 -EB" } */
2
3 typedef unsigned uint128_t __attribute__((mode(TI)));
4
5 extern uint128_t g[16];
6 extern unsigned char gstuff[0x10000];
7
8 NOMIPS16 uint128_t
9 foo (uint128_t i1, uint128_t i2, uint128_t i3, uint128_t i4,
10      uint128_t *x, unsigned char *lstuff)
11 {
12   g[0] = i1;
13   g[1] = i2;
14   g[2] = i3;
15   g[3] = i4;
16   x[0] = x[4];
17   x[1] = 0;
18   x[2] = ((uint128_t) 0x123456789abcdefULL << 64) | 0xaabbccddeeff1122ULL;
19   x[3] = g[4];
20   x[4] = *(uint128_t *) (lstuff + 0x7fff);
21   return *(uint128_t *) (gstuff + 0x7fff);
22 }
23
24 MIPS16 uint128_t
25 bar (uint128_t i1, uint128_t i2, uint128_t i3, uint128_t i4,
26      uint128_t *x, unsigned char *lstuff)
27 {
28   g[0] = i1;
29   g[1] = i2;
30   g[2] = i3;
31   g[3] = i4;
32   x[0] = x[4];
33   x[1] = 0;
34   x[2] = ((uint128_t) 0x123456789abcdefULL << 64) | 0xaabbccddeeff1122ULL;
35   x[3] = g[4];
36   x[4] = *(uint128_t *) (lstuff + 0x7fff);
37   return *(uint128_t *) (gstuff + 0x7fff);
38 }