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