[ARM] Fix PR85203: cmse_nonsecure_caller returns wrong result
[official-gcc.git] / gcc / testsuite / gcc.target / aarch64 / extend.c
blobf399e55ce8b82386f0ff9cb1d51540d30be0e34a
1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
4 int
5 ldr_uxtw (int *arr, unsigned int i)
7 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*uxtw #?2]" } } */
8 return arr[i];
11 int
12 ldr_uxtw0 (char *arr, unsigned int i)
14 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*uxtw]" } } */
15 return arr[i];
18 int
19 ldr_sxtw (int *arr, int i)
21 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*sxtw #?2]" } } */
22 return arr[i];
25 int
26 ldr_sxtw0 (char *arr, int i)
28 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*sxtw]" } } */
29 return arr[i];
32 unsigned long long
33 adddi_uxtw (unsigned long long a, unsigned int i)
35 /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*uxtw #?3" } } */
36 return a + ((unsigned long long)i << 3);
39 unsigned long long
40 adddi_uxtw0 (unsigned long long a, unsigned int i)
42 /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*uxtw\n" } } */
43 return a + i;
46 long long
47 adddi_sxtw (long long a, int i)
49 /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*sxtw #?3" } } */
50 return a + ((long long)i << 3);
53 long long
54 adddi_sxtw0 (long long a, int i)
56 /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*sxtw\n" } } */
57 return a + i;
60 unsigned long long
61 subdi_uxtw (unsigned long long a, unsigned int i)
63 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxtw #?3" } } */
64 return a - ((unsigned long long)i << 3);
67 unsigned long long
68 subdi_uxtw0 (unsigned long long a, unsigned int i)
70 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxtw\n" } } */
71 return a - i;
74 long long
75 subdi_sxtw (long long a, int i)
77 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxtw #?3" } } */
78 return a - ((long long)i << 3);
81 long long
82 subdi_sxtw0 (long long a, int i)
84 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxtw\n" } } */
85 return a - (long long)i;
88 unsigned long long
89 subdi_uxth (unsigned long long a, unsigned short i)
91 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxth #?1" } } */
92 return a - ((unsigned long long)i << 1);
95 unsigned long long
96 subdi_uxth0 (unsigned long long a, unsigned short i)
98 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxth\n" } } */
99 return a - i;
102 long long
103 subdi_sxth (long long a, short i)
105 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxth #?1" } } */
106 return a - ((long long)i << 1);
109 long long
110 subdi_sxth0 (long long a, short i)
112 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*sxth\n" } } */
113 return a - (long long)i;
116 unsigned int
117 subsi_uxth (unsigned int a, unsigned short i)
119 /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*uxth #?1" } } */
120 return a - ((unsigned int)i << 1);
123 unsigned int
124 subsi_uxth0 (unsigned int a, unsigned short i)
126 /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*uxth\n" } } */
127 return a - i;
131 subsi_sxth (int a, short i)
133 /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*sxth #?1" } } */
134 return a - ((int)i << 1);
138 subsi_sxth0 (int a, short i)
140 /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*sxth\n" } } */
141 return a - (int)i;
144 unsigned int
145 addsi_uxth (unsigned int a, unsigned short i)
147 /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*uxth #?1" } } */
148 return a + ((unsigned int)i << 1);
151 unsigned int
152 addsi_uxth0 (unsigned int a, unsigned short i)
154 /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*uxth\n" } } */
155 return a + i;
159 addsi_sxth (int a, short i)
161 /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*sxth #?1" } } */
162 return a + ((int)i << 1);
166 addsi_sxth0 (int a, short i)
168 /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*sxth\n" } } */
169 return a + (int)i;