C Tutorial

C Tutorial C Language Environment Setup Execution flow of C program C printf and Scanf C Data type C Token Variable in C Operators in C Comments in C Escape Sequence in C C – Storage Classes C Decision control statement Loop Statement in C Break, continue and goto statement in C Type Casting in C Function in C Recursion in C String in C C Array Pointer in C Dynamic memory allocation C –Structure Nested Structure in C Union in C File Handling in C C pre-processor Static Function In C Sizeof In C Selection Sort In C Scope Of Variables In C Runtime Vs Compile Time In C Random Access Lseek In C Queue Implementation In C Pseudo Code In C Prototype In C Pointer To Pointer In C Pointer Arithmetic In C Passing Array To Function In C Null Character In C Merge Sort In C Macros In C Library Functions In C Memory Leak In C Int In C Goto And Labels In C Fibonacci Series In C Fflush In C Derived Data Types In C Data Types In C Const Vs Volatile In C Character Set In C Character Class Tests In C Calloc In C C Pointers Arrays In C Include In C Clrscr In C C Vs Java String Literals In C Types Of Pointers In C Variables In C Volatile In C Why C Is A Middle Level Language Infix To Postfix Program In C Ceil function in C LCM of two numbers in C Quick sort in C Static in C function pointer as argument in C Top Array Keywords in C Add two numbers using the function in C Armstrong program in C using function Array, Declaring Arrays and Array Initialization Limitations of Inline Function in C Merge and Merge sort with example in C Do-While Loop in C For Loop in C While-Loop in C Difference between while and do-while loop in C Array Of Structures in C Data Structures And Algorithms in C Types Of Structures In C How to Avoid Structure Padding in C Use of Structure in C Do WHILE LOOP in C Programming Examples For Loop in C Programming Examples Entry Control Loop in C Exit control loop in C Infinite loop in C Nested loop in C pow() function in C String Handling functions in C Prime Number code in C Factorial Program in C using For Loop Factorial Program in C Using While Loop Fibonacci Series in C Using For Loop Fibonacci series in C using while loop Prime Number Program in C using for Loop While Loop in C programming examples Built-in functions in C Assert() Function C vs Java Strings Call Back Function in Embedded C Else If Ladder fgets() function Ftell() Function getc() function getch() function gets() function Heap Sort Nested if-else statement Pi() Function Positioning of file Write() function abs() function in C Attributes in C C program to find factorial of a number using Recursion Ferror() in c fopen() function in C Fibonacci series program in C using Recursion Formatted Input and output function in C Snake Game in C User Defined Functions in C Beep() function in C Cbrt() function in C Hook() function in C Isalnum() function in C C Program to find the Roots of a Quadratic Equation C Switch Statements Difference between rand() and srand() function in C Difference between while and for loop in C Doubly Linked list in C Example of Iteration in C How to use atoi() function in C How to use floor() function in C How to use sine() function in C How to use Typedef Struct in C Integer Promotions in C C Program Swap Numbers in cyclic order Using Call by Reference C Program to Find Largest Number Using Dynamic Memory Allocation C Program to Find the Largest Number using Ternary Operator C/C++ Program to Find the Size of int, float, double and char Find the Largest Three Distinct Elements in an Array using C/C++ Loop Questions in C Modulus on Negative Numbers in C Multiplication table program in C using For loop Nested Loops in C Programming Examples C Program for Mean and Median of an Unsorted Array Results of Comparison Operations in C and C++ Reverse a Stack using Recursion in C Simple hash() function in C strcat() Function in C Sum of N numbers in C using For loop Use of free() function in C Write a program that produces different results in C and C++ C Function Argument and Return Values Keywords in C Bank management system in C Calendar application in C Floor() Function in C Free() Function in C How to delete a file in C How to move a text in C Remove an element from an array in C Unformatted input() and output() function in C What are linker and loader in C

Builtin functions of GCC compiler

Certain built-in functions are present in the GCC compiler. These features are as follows:

Function_ built in_popcount (x)

The number of 1s in data of the integer type can be counted using this built-in function. Let's look at a builtin _popcount() function sample.

Example

if x = 4
100 is the binary value of 4


Output:

The number of ones in binary value 4 is 1.

Program

#include<iostream>
using namespace std;
int main() {
   int n = 13; // 1101 is binary
   cout << "Count of 1s in binary of "<< n <<" is " << __builtin_popcount(n);
   return 0;
}

Output

Builtin functions of GCC compiler

Function_builtin_parity (x)

The parity of an integer can be checked using this built-in function. If the number shows even parity, it results false, otherwise it results true. Let's look at a _builtin parity() function sample.

Example:

if x = 7
As binary number of 7 is 111 it contains odd number of 1’s.

Output:

1 is 7’s parity

Program:

#include<iostream>
using namespace std;
int main () {
   int n = 13; //1101 is binary
   cout << "Parity of "<< n <<" is " << __builtin_parity (n);
   return 0;
}

Output:

Builtin functions of GCC compiler

Function_builtin_clz (x)

The leading zeros of an integer are counted using this built-in function. Let's look at a _builtin clz() function sample.

Example:

b = 16
00000000 00000000 00000000 00010000is the binary form of the number 16

Output:  

The number obtained is 27

Program:

#include<iostream>
using namespace std;
int main () {
   int n = 13; //1101 is binary
   //0000 0000 0000 0000 0000 0000 0000 1101 (32bit integer)
   cout << "Leading zero count of "<< n <<" is " << __builtin_clz(n);
   return 0;
}

Output:

Builtin functions of GCC compiler

Function_builtin_ctz (x)

The trailing zeros of an integer are counted using this built-in function. Count Trailing Zeros is what the ctz stands for. Let's look at a _builtin ctz() function sample.

Example

b = 16
 00000000 00000000 00000000 00010000 is the binary form of number 16

Output:

the result obtained is ctz which equals to 4

Program:

#include <stdio.h>
intmain () 
{ 
    intn = 16; 
    printf ("Count of zeros from last to first "Occurrence of one is %d", 
           __builtin_ctz(n)); 
    return0; 
}

Output:

Builtin functions of GCC compiler
// Code to find the GCC compiler's built-in functions
#include <stdio.h>
#include <stdlib.h>
  
intmain () 
{ 
    intnum = 4; 
    intclz = 0; 
    intctz = 0; 
    intpop = 0; 
    intparity = 0; 
  
    pop = __builtin_popcount(num); 
    printf ("Number of one's in %d is %d
", num, pop); 
  
    parity = __builtin_parity(num); 
    printf ("Parity of %d is %d
", num, parity); 
  
    clz = __builtin_clz(num); 
    printf("Number of leading zero's in %d is %d
", num, clz); 
  
    // It does not work for signed values
    clz = __builtin_clz(-num); 
    printf ("Number of leading zero's in %d is %d
", -num, clz); 
  
    ctz = __builtin_ctz(num); 
    printf ("Number of trailing zero's in %d is %d
", num, ctz); 
  
    return0; 
}

Output:

Builtin functions of GCC compiler

GCC also provides other built_in_functions

In addition to the above-mentioned built-in features, GCC offers a sizable number of others. We do not advise using these routines for general use; some of them are intended for internal usage in the processing of exceptions or variable-length argument lists and are not described here since they may change at any time.

The remaining functions are offered to aid with optimization.

Except for built-ins that expand to library calls or that have equivalents in the standard C library (described below), all built-in functions in GCC are always expanded inline, negating the need for corresponding entry points, and making it impossible to determine their address. A compile-time error occurs if you try to utilise them in an expression other than a function call.

Many of the functions in the common C library have built-in counterparts in GCC. There are two versions of these functions: one with names that begin with the __builtin_ prefix and one without. Even if you set the -fno-builtin option, both forms have the same type (including prototype), address (when their address is taken), and meaning as the C library functions. The library function is called when one of these functions cannot be optimised because many of them are only optimised in specific circumstances.



ADVERTISEMENT
ADVERTISEMENT