Update concepts branch to revision 131834
[official-gcc.git] / gcc / testsuite / gcc.target / mips / int-moves-2.c
blob325bfceb029d29d84815d19faa1d91c3960caaeb
1 /* { dg-do compile { target mips16_attribute } } */
2 /* { dg-mips-options "-mgp64 -msoft-float -O2 -EB" } */
3 /* { dg-add-options mips16_attribute } */
5 typedef unsigned uint128_t __attribute__((mode(TI)));
7 extern uint128_t g[16];
8 extern unsigned char gstuff[0x10000];
10 NOMIPS16 uint128_t
11 foo (uint128_t i1, uint128_t i2, uint128_t i3, uint128_t i4,
12 uint128_t *x, unsigned char *lstuff)
14 g[0] = i1;
15 g[1] = i2;
16 g[2] = i3;
17 g[3] = i4;
18 x[0] = x[4];
19 x[1] = 0;
20 x[2] = ((uint128_t) 0x123456789abcdefULL << 64) | 0xaabbccddeeff1122ULL;
21 x[3] = g[4];
22 x[4] = *(uint128_t *) (lstuff + 0x7fff);
23 return *(uint128_t *) (gstuff + 0x7fff);
26 MIPS16 uint128_t
27 bar (uint128_t i1, uint128_t i2, uint128_t i3, uint128_t i4,
28 uint128_t *x, unsigned char *lstuff)
30 g[0] = i1;
31 g[1] = i2;
32 g[2] = i3;
33 g[3] = i4;
34 x[0] = x[4];
35 x[1] = 0;
36 x[2] = ((uint128_t) 0x123456789abcdefULL << 64) | 0xaabbccddeeff1122ULL;
37 x[3] = g[4];
38 x[4] = *(uint128_t *) (lstuff + 0x7fff);
39 return *(uint128_t *) (gstuff + 0x7fff);