Voici la liste des instructions reconnu par le LLVM :
| Nom | Description |
|---|---|
| add | Cette instruction permet de retourner la somme de ses 2 opérandes. |
| addrspacecast ... to | Cette instruction permet de convertir la valeur du pointeur spécifié dans l'espace adresse spécifié en type spécifié dans l'espace adresse spécifié. |
| alloca | Cette instruction permet d'allouer de la mémoire dans le cadre de la pile de la fonction en cours d'exécution, étant automatiquement libérée lorsque cette fonction reviendra à son appelant. |
| and | Cette instruction permet de retourner un «Et binaire» de ses 2 opérandes. |
| ashr | Cette instruction permet de retourner le premier opérande décalé à droite d'un nombre spécifié de bits avec extension de signe. |
| atomicrmw | Cette instruction permet de modifier de manière atomique la mémoire. |
| bitcast ... to | Cette instruction permet de convertir la valeur en type spécifié sans changer aucun bit. |
| br | Cette instruction permet de transférer le flux de commande vers un bloc de base différent dans la fonction courante. |
| call | Cette instruction permet de faire un simple appel de fonction. |
| callbr | Cette instruction permet de provoquer le transfert du contrôle vers une fonction spécifiée, avec possibilité de transfert du flux de contrôle vers l'étiquette normal ou l'un des other. |
| catchpad | Cette instruction permet d'effectuer un traitement des exceptions de LLVM pour spécifier qu'un bloc de base commence un gestionnaire de catch - un programme dans lequel une routine personnalisé tente de transférer le contrôle pour intercepter une exception. |
| catchret | Cette instruction permet de terminer une exception existante (en vol) dont le déroulement a été interrompu par une instruction catchpad. |
| catchswitch | Cette instruction permet de transférer le contrôle à l'un des successeurs des gestionnaires, le cas échéant, ou continue à se dérouler via l'étiquette de déroulement, le cas échéant. |
| cleanupret | Cette instruction permet d'effectuer une terminaison ayant un successeur facultatif. |
| cleanuppad | Cette instruction permet d'effectuer le traitement des exceptions de LLVM pour spécifier qu'un bloc de base est un bloc de nettoyage - un programme dans lequel une routine personnalisé tente de transférer le contrôle pour exécuter des actions de nettoyage. |
| cmpxchg | Cette instruction permet de modifier la mémoire de manière atomique. |
| extractelement | Cette instruction permet d'extraire un élément scalaire unique d'un vecteur à un index spécifié. |
| extractvalue | Cette instruction permet d'extraire la valeur d'un champ membre d'une valeur d'agrégat. |
| fadd | Cette instruction permet de retourner la somme de ses 2 opérandes. |
| fcmp | Cette instruction permet de retourner une valeur booléenne ou un vecteur de valeurs booléennes basé sur la comparaison de ses opérandes. |
| fdiv | Cette instruction permet de retourner le quotient de ses 2 opérandes réel (à virgule flottante). |
| fence | Cette instruction permet d'introduire le frontale «se passe avant» entre les opérations. |
| fmul | Cette instruction permet de retourner le produit de ses 2 opérandes. |
| fneg | Cette instruction permet de retourner la négation de son opérande. |
| fpext ... to | Cette instruction permet d'étendre une valeur à virgule flottante à une plus grande valeur à virgule flottante. |
| fptosi ... to | Cette fonction permet de convertir une valeur en virgule flottante en type spécifié. |
| fptoui ... to | Cette fonction permet de convertir une valeur à virgule flottante en son équivalent entier non signé de type spécifié. |
| fptrunc ... to | Cette instruction permet de tronquer la valeur au type spécifié. |
| frem | Cette instruction permet de retourner le reste de la division de ses 2 opérandes. |
| fsub | Cette instruction permet de retourner la différence entre ses 2 opérandes. |
| getelementptr | Cette instruction permet de demander l'adresse d'un sous-élément d'une structure de données d'agrégat. |
| icmp | Cette instruction permet de retourner une valeur booléenne ou un vecteur de valeurs booléennes basé sur la comparaison de ses 2 opérandes entier, vecteur entier, pointeur ou vecteur de pointeur. |
| indirectbr | Cette instruction permet d'intégrer une branche indirecte d'une étiquette dans la fonction en cours, avec l'adresse spécifiée. |
| insertelement | Cette instruction permet d'insérer un élément scalaire dans un vecteur situé à un index spécifié. |
| insertvalue | Cette instruction permet d'insérer une valeur dans un champ membre d'une valeur d'agrégat. |
| inttoptr ... to | Cette instruction permet de convertir une valeur entière en un type de pointeur spécifié. |
| invoke | Cette instruction permet d'appeler le transfert du contrôle vers une fonction spécifiée, avec possibilité de transfert du flux de contrôle vers l'étiquette normal ou exception. |
| landingpad | Cette instruction permet d'effectuer le traitement des exceptions de LLVM pour spécifier qu'un bloc de base est un pad cible - une exception où la cible et correspond au code trouvé dans la partie catch d'une séquence try/catch. |
| load | Cette instruction permet d'effectuer la lecture de la mémoire. |
| lshr | Cette instruction permet de retourner le premier opérande décalé à droite d'un nombre spécifié de bits à remplissage de 0. |
| mul | Cette instruction permet de retourner le produit de ses 2 opérandes. |
| or | Cette instruction permet de retourner un «Ou inclusif binaire» de ses 2 opérandes. |
| phi | Cette instruction permet d'intégrer un noeud φ dans le graphe SSA représentant la fonction. |
| ptrtoint ... to | Cette instruction permet de convertir le pointeur ou un vecteur de pointeurs en un type entier (ou un vecteur d'entiers) spécifié. |
| resume | Cette instruction permet d'effectuer une terminaison n'ayant pas de successeur. |
| ret | Cette instruction permet de retourner le flux de contrôle (et éventuellement une valeur) d'une fonction à l'appelant. |
| sdiv | Cette instruction permet de retourner le quotient de ses 2 opérandes signé. |
| select | Cette instruction permet de choisir une valeur en fonction d'une condition, sans ramification au niveau IR. |
| sext ... to | Cette instruction permet d'étendre le signe de la valeur au type spécifié. |
| shl | Cette instruction permet de retourner le premier opérande décalé à gauche d'un nombre spécifié de bits. |
| shufflevector | Cette instruction permet de construire une permutation d'éléments à partir de 2 vecteurs d'entrée, renvoyant un vecteur ayant le même type d'élément que l'entrée et une longueur identique à celle du masque de mélange. |
| sitofp ... to | Cette instruction permet de considérer la valeur comme un entier signé et de la convertir au type spécifié. |
| srem | Cette instruction permet de retourner le reste de la division signée de ses deux paramètres. |
| store | Cette instruction permet d'effectuer l'écriture vers la mémoire. |
| sub | Cette instruction permet de retourner la différence entre ses 2 opérandes. |
| switch | Cette instruction permet de transférer le flux de contrôle vers plusieurs emplacements différents. |
| trunc ... to | Cette instruction permet de tronquer son opérande au type spécifié. |
| udiv | Cette instruction permet de retourner le quotient de ses 2 opérandes non-signé. |
| uitofp ... to | Cette instruction permet de considérer la valeur comme un entier non signé et de convertir cette valeur en type spécifié. |
| unreachable | Cette instruction permet d'informer l'optimiseur qu'une partie particulière du code n'est pas accessible. |
| urem | Cette instruction permet de retourner le reste de la division non signée de ses deux paramètres. |
| va_arg | Cette instruction permet d'accéder aux paramètres passés dans la zone «argument variable» d'un appel de fonction. |
| xor | Cette instruction permet de retourner un «Ou exclusif binaire» de ses 2 opérandes. |
| zext ... to | Cette instruction permet d'étendre le zéro de son opérande au type spécifié. |
Dernière mise à jour : Jeudi, le 13 juin 2019