1 /* { dg-do compile } */
2 /* { dg-options "-O2" } */
5 ldr_uxtw (int *arr
, unsigned int i
)
7 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*uxtw #?2]" } } */
12 ldr_uxtw0 (char *arr
, unsigned int i
)
14 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*uxtw]" } } */
19 ldr_sxtw (int *arr
, int i
)
21 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*sxtw #?2]" } } */
26 ldr_sxtw0 (char *arr
, int i
)
28 /* { dg-final { scan-assembler "ldr\tw\[0-9\]+,.*sxtw]" } } */
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);
40 adddi_uxtw0 (unsigned long long a
, unsigned int i
)
42 /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*uxtw\n" } } */
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);
54 adddi_sxtw0 (long long a
, int i
)
56 /* { dg-final { scan-assembler "add\tx\[0-9\]+,.*sxtw\n" } } */
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);
68 subdi_uxtw0 (unsigned long long a
, unsigned int i
)
70 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxtw\n" } } */
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);
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
;
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);
96 subdi_uxth0 (unsigned long long a
, unsigned short i
)
98 /* { dg-final { scan-assembler "sub\tx\[0-9\]+,.*uxth\n" } } */
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);
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
;
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);
124 subsi_uxth0 (unsigned int a
, unsigned short i
)
126 /* { dg-final { scan-assembler "sub\tw\[0-9\]+,.*uxth\n" } } */
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" } } */
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);
152 addsi_uxth0 (unsigned int a
, unsigned short i
)
154 /* { dg-final { scan-assembler "add\tw\[0-9\]+,.*uxth\n" } } */
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" } } */