Skip to content

Commit 09585d4

Browse files
committed
Add gnu bit operation builtins
1 parent 637d5be commit 09585d4

1 file changed

Lines changed: 81 additions & 3 deletions

File tree

cfg/gnu.cfg

Lines changed: 81 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,16 +241,94 @@
241241
<function name="__builtin_trap,__builtin_unreachable">
242242
<noreturn>true</noreturn>
243243
</function>
244+
<!-- https://gcc.gnu.org/onlinedocs/gcc/Bit-Operation-Builtins.html -->
244245
<!-- int __builtin_popcount (unsigned int x) -->
246+
<!-- int __builtin_popcountl (unsigned long x) -->
247+
<!-- int __builtin_popcountll (unsigned long long x) -->
245248
<!-- int __builtin_parity (unsigned int x) -->
249+
<!-- int __builtin_parityl (unsigned long x) -->
250+
<!-- int __builtin_parityll (unsigned long long x) -->
246251
<!-- int __builtin_ffs (int x) -->
247-
<!-- int __builtin_ffsl (long) -->
248-
<!-- int __builtin_ffsll (long long) -->
252+
<!-- int __builtin_ffsl (long x) -->
253+
<!-- int __builtin_ffsll (long long x) -->
254+
<!-- int __builtin_clrsb (int x) -->
255+
<!-- int __builtin_clrsbl (long x) -->
256+
<!-- int __builtin_clrsbll (long long x) -->
257+
<function name="__builtin_popcount,__builtin_popcountl,__builtin_popcountll,__builtin_parity,__builtin_parityl,__builtin_parityll,__builtin_ffs,__builtin_ffsl,__builtin_ffsll,__builtin_clrsb,__builtin_clrsbl,__builtin_clrsbll">
258+
<noreturn>false</noreturn>
259+
<returnValue type="int"/>
260+
<use-retval/>
261+
<const/>
262+
<arg nr="1" direction="in">
263+
<not-uninit/>
264+
<not-bool/>
265+
</arg>
266+
</function>
249267
<!-- int __builtin_clz (unsigned int x) -->
250-
<function name="__builtin_popcount,__builtin_parity,__builtin_ffs,__builtin_ffsl,__builtin_ffsll,__builtin_clz">
268+
<!-- int __builtin_clzl (unsigned long x) -->
269+
<!-- int __builtin_clzll (unsigned long long x) -->
270+
<!-- int __builtin_ctz (unsigned int x) -->
271+
<!-- int __builtin_ctzl (unsigned long x) -->
272+
<!-- int __builtin_ctzll (unsigned long long x) -->
273+
<function name="__builtin_clz,__builtin_clzl,__builtin_clzll,__builtin_ctz,__builtin_ctzl,__builtin_ctzll">
251274
<noreturn>false</noreturn>
252275
<returnValue type="int"/>
253276
<use-retval/>
277+
<const/>
278+
<arg nr="1" direction="in">
279+
<not-uninit/>
280+
<not-bool/>
281+
<!-- result is undefined if x is 0 -->
282+
<valid>1:</valid>
283+
</arg>
284+
</function>
285+
<!-- int __builtin_ffsg (...) -->
286+
<!-- int __builtin_clrsbg (...) -->
287+
<!-- int __builtin_popcountg (...) -->
288+
<!-- int __builtin_parityg (...) -->
289+
<function name="__builtin_ffsg,__builtin_clrsbg,__builtin_popcountg,__builtin_parityg">
290+
<noreturn>false</noreturn>
291+
<returnValue type="int"/>
292+
<use-retval/>
293+
<const/>
294+
<arg nr="1" direction="in">
295+
<not-uninit/>
296+
<not-bool/>
297+
</arg>
298+
</function>
299+
<!-- int __builtin_clzg (...) -->
300+
<!-- int __builtin_ctzg (...) -->
301+
<function name="__builtin_clzg,__builtin_ctzg">
302+
<noreturn>false</noreturn>
303+
<returnValue type="int"/>
304+
<use-retval/>
305+
<const/>
306+
<arg nr="1" direction="in">
307+
<not-uninit/>
308+
<not-bool/>
309+
</arg>
310+
<arg nr="variadic" direction="in">
311+
<not-uninit/>
312+
<not-bool/>
313+
</arg>
314+
</function>
315+
<!-- unsigned int __builtin_stdc_bit_width (uintX_t x) -->
316+
<!-- unsigned int __builtin_stdc_count_ones (uintX_t x) -->
317+
<!-- unsigned int __builtin_stdc_count_zeros (uintX_t x) -->
318+
<!-- unsigned int __builtin_stdc_first_leading_one (uintX_t x) -->
319+
<!-- unsigned int __builtin_stdc_first_leading_zero (uintX_t x) -->
320+
<!-- unsigned int __builtin_stdc_first_trailing_one (uintX_t x) -->
321+
<!-- unsigned int __builtin_stdc_first_trailing_zero (uintX_t x) -->
322+
<!-- unsigned int __builtin_stdc_leading_ones (uintX_t x) -->
323+
<!-- unsigned int __builtin_stdc_leading_zeros (uintX_t x) -->
324+
<!-- unsigned int __builtin_stdc_trailing_ones (uintX_t x) -->
325+
<!-- unsigned int __builtin_stdc_trailing_zeros (uintX_t x) -->
326+
<!-- unsigned int __builtin_stdc_has_single_bit (uintX_t x) -->
327+
<function name="__builtin_stdc_bit_width,__builtin_stdc_count_ones,__builtin_stdc_count_zeros,__builtin_stdc_first_leading_one,__builtin_stdc_first_leading_zero,__builtin_stdc_first_trailing_one,__builtin_stdc_first_trailing_zero,__builtin_stdc_leading_ones,__builtin_stdc_leading_zeros,__builtin_stdc_trailing_ones,__builtin_stdc_trailing_zeros,__builtin_stdc_has_single_bit">
328+
<noreturn>false</noreturn>
329+
<returnValue type="unsigned int"/>
330+
<use-retval/>
331+
<const/>
254332
<arg nr="1" direction="in">
255333
<not-uninit/>
256334
<not-bool/>

0 commit comments

Comments
 (0)