1 /* { dg-do assemble } */
2 /* { dg-options "-O -march=r2" } */
3 
test_stex(unsigned char * p1,unsigned char * p2)4 int test_stex (unsigned char* p1, unsigned char* p2)
5 {
6   int a, b, c, d;
7   a = __builtin_stex (p1, *p2);
8   b = __builtin_stex (p2, 0);
9   c = __builtin_stex (p2 + 1, 0x80);
10   d = __builtin_stex (p2 + 2, 0x7f);
11 
12   return a + b + c + d;
13 }
14 
test_stsex(unsigned short * p1,unsigned short * p2)15 int test_stsex (unsigned short* p1, unsigned short* p2)
16 {
17   int a, b, c, d;
18 
19   a = __builtin_stsex (p1, *p2);
20   b = __builtin_stsex (p2, 0);
21   c = __builtin_stsex (p2 + 1, 0x8000);
22   d = __builtin_stsex (p2 + 2, 0x7fff);
23 
24   return a + b + c + d;
25 }
26 
test_ldex(unsigned char * p1,unsigned char * p2)27 int test_ldex (unsigned char* p1, unsigned char* p2)
28 {
29   int a, b, c, d;
30 
31   a = __builtin_ldex (p1);
32   b = __builtin_ldex (p2);
33   c = __builtin_ldex (p2 + 1);
34   d = __builtin_ldex (p2 + 2);
35 
36   return a + b + c + d;
37 }
38 
test_ldsex(unsigned char * p1,unsigned char * p2)39 int test_ldsex (unsigned char* p1, unsigned char* p2)
40 {
41   int a, b, c, d;
42 
43   a = __builtin_ldsex (p1);
44   b = __builtin_ldsex (p2);
45   c = __builtin_ldsex (p2 + 1);
46   d = __builtin_ldsex (p2 + 2);
47 
48   return a + b + c + d;
49 }
50