Section courante

A propos

Section administrative du site

load

Charge
LLVM

Syntaxe

result = load [volatile] ty, ty* pointer[, align alignment][, !nontemporal !index][, !invariant.load !index][, !invariant.group !index][, !nonnull !index][, !dereferenceable !deref_bytes_node][, !dereferenceable_or_null !deref_bytes_node][, !align !align_node]
result = load atomic [volatile] ty, ty* pointer [syncscope("target-scope")] ordering, align alignment [, !invariant.group !index]

Paramètres

Nom Description
result Ce paramètre permet d'indiquer la valeur chargée depuis l'adresse mémoire.
volatile Ce paramètre permet de marquer l'accès mémoire comme volatile, c'est-à-dire qu'il ne peut pas être supprimé ou réordonné par l'optimiseur (utile pour les accès d'entrée/sortie ou de mémoire partagée).
ty Ce paramètre permet d'indiquer le type de la valeur à charger (exemple : i32, float).
pointer Ce paramètre permet d'indiquer un pointeur vers l'adresse mémoire source.
alignment Ce paramètre permet d'indiquer l'alignement de l'accès mémoire (exemple : align 8). Cela peut permettre des optimisations.
!nontemporal !index Ce paramètre permet d'indiquer un accès non-temporel (non mis en cache). Utilisé pour les lectures de données qui ne seront pas réutilisées.
!invariant.load !index Ce paramètre permet d'indiquer que la valeur chargée ne change jamais (optimisation agressive).
!invariant.group !index Ce paramètre permet de grouper plusieurs load comme invariants (optimisations plus globales).
!nonnull !index Ce paramètre permet d'indiquer que le pointeur ne sera jamais nul. Permet des optimisations de suppression de vérification de nullité.
!dereferenceable !deref_bytes_node Ce paramètre permet de garantir que le pointeur est sûr pour n octets.
!dereferenceable_or_null !node Pareil, mais seulement si le pointeur n'est pas nul.
!align !align_node Ce paramètre permet d'indiquer l'alignement garanti exprimé via un métadonnée distincte (alternative à align direct).
atomic Ce paramètre permet d'indiquer que le chargement est atomique, donc sécurisé pour l'accès concurrent.
target-scope Ce paramètre permet d'indiquer la portée de synchronisation (exemple : "singlethread" ou "system"). Détermine jusqu'où l'effet de l'opération s'étend.
ordering Ce paramètre permet d'indiquer le type d'ordonnancement mémoire, par exemple : unordered, monotonic, acquire, seq_cst
!invariant.group !index Ce paramètre permet d'indiquer la métadonnée pour dire que ce chargement est dans un groupe invariant (comme dans la version non atomique).

Description

Cette instruction permet d'effectuer la lecture de la mémoire.



Dernière mise à jour : Jeudi, le 13 juin 2019