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. |
cleanupret | Cette instruction permet d'effectuer une terminaison ayant un successeur facultatif. |
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. |
cmpxchg | Cette instruction permet de modifier la mémoire de manière atomique. |
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. |
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. |
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é. |
sext ... to | Cette instruction permet d'étendre le signe de la valeur au type spécifié. |
select | Cette instruction permet de choisir une valeur en fonction d'une condition, sans ramification au niveau IR. |
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. |
sub | Cette instruction permet de retourner la différence entre ses 2 opérandes. |
store | Cette instruction permet d'effectuer l'écriture vers la mémoire. |
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