Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.
Le type de données SIMD.Uint8x16
représente un vecteur sur 128 bits, divisés en 16 voies, chacune stockant des entiers non-signés exprimés sur 8 bits.
Syntaxe
SIMD.Uint8x16(s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15);
Paramètres
s[0-15]
Facultatif- Un entier qui définit la valeur à utiliser pour la voie, la valeur par défaut est 0.
Constructeurs
En plus des constructeurs simples, l'API SIMD fournit les constructeurs suivants.
SIMD.Uint8x16.splat()
- Crée un
Uint8x16
dont toutes les voies reçoivent une valeur donnée.
On notera qu'il est possible de convertir des données depuis un autre type SIMD vers Uint8x16
.
Note : Les types SIMD ne fonctionnent pas avec l'opérateur new
, en effet les valeurs SIMD ne sont pas des valeurs « objectifiées » (à la différence des chaînes qu'on peut créer avec String(s)
et new String(s)
).
var v = new SIMD.Uint8x16(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); // TypeError: SIMD.Uint8x16 is not a constructor var w = new SIMD.Uint8x16.splat(3); // TypeError: SIMD.Uint8x16.splat is not a constructor
Il faut écrire :
var v = SIMD.Uint8x16(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16); var w = SIMD.Uint8x16.splat(3);
Opérations
Pour réaliser des opérations avec des types de données SIMD, il est nécessaire d'utiliser des opération SIMD.
Vérification des types SIMD
SIMD.Uint8x16.check()
- Renvoie un nouvel
Uint8x16
si le paramètre passé est un type de donnée SIMD valide et si c'est le même queUint8x16
. Sinon, cette méthode lèvera une exceptionTypeError
.
Accéder aux voies et les modifier
SIMD.Uint8x16.extractLane()
- Renvoie la valeur d'une voie donnée.
SIMD.Uint8x16.replaceLane()
- Renvoie un nouveau vecteur
Uint8x16
dont la voie donnée a été remplacée par la valeur fournie.
Chargement et enregistrement depuis des tableaux typés
SIMD.Uint8x16.load()
- Renvoie une nouvelle instance
Uint8x16
dont les voies sont chargées avec les valeurs d'un tableau typé. SIMD.Uint8x16.store()
- Enregistre un
Uint8x16
dans un tableau typé.
Opérations arithmétiques
SIMD.Uint8x16.add()
- Renvoie un nouvel
Uint8x16
avec la somme des voies (a + b
). SIMD.Uint8x16.addSaturate()
- Renvoie un nouvel
Uint8x16
avec la somme des voies (a + b
) dont le résultat est ramené dans l'intervalle si nécessaire. SIMD.Uint8x16.mul()
- Renvoieun nouvel
Uint8x16
avec la multiplication des voies (a * b
). SIMD.Uint8x16.neg()
- Renvoieun nouvel
Uint8x16
avec les valeurs opposées des voies. SIMD.Uint8x16.sub()
- Renvoie un nouvel
Uint8x16
avec la soustraction des voies (a - b
). SIMD.Uint8x16.subSaturate()
- Renvoie un nouvel
Uint8x16
avec la différence des voies (a - b
) dont le résultat est ramené dans l'intervalle si nécessaire
Mélange et permutation
SIMD.Uint8x16.shuffle()
- Renvoie un nouvel
Uint8x16
dont les valeurs des voies ont été mélangées à partir de deux vecteurs. SIMD.Uint8x16.swizzle()
- Renvoie un nouvel
Uint8x16
dont les valeurs des voies ont été permutées
-
Sélections
SIMD.Uint8x16.select()
- Renvoie une nouvelle instance dont les valeurs des voies sont un mélange des différentes voies en fonction d'un masque de sélection.
Comparaisons
SIMD.Uint8x16.equal()
- Renvoie un masque de sélection selon le résultat de
a == b
. SIMD.Uint8x16.notEqual()
- Renvoie un masque de sélection selon le résultat de
a != b
. SIMD.Uint8x16.lessThan()
- Renvoie un masque de sélection selon le résultat de
a < b
. SIMD.Uint8x16.lessThanOrEqual()
- Renvoie un masque de sélection selon le résultat de
a <= b
. SIMD.Uint8x16.greaterThan()
- Renvoie un masque de sélection selon le résultat de
a > b
. SIMD.Uint8x16.greaterThanOrEqual()
- Renvoie un masque de sélection selon le résultat de
a >= b
.
Opérations logiques
SIMD.Uint8x16.and()
- Renvoie un nouvel
Uint8x16
dont les voies sont le résultat d'un ET logique sur les voies des instances fournies (a & b
). SIMD.Uint8x16.or()
- Renvoie un nouvel
Uint8x16
dont les voies sont le résultat d'un OU logique sur les voies des instances fournies (a | b
). SIMD.Uint8x16.xor()
- Renvoie un nouvel
Uint8x16
dont les voies sont le résultat d'un XOR logique sur les voies des instances fournies (a ^ b
). SIMD.Uint8x16.not()
- Renvoie un nouvel
Uint8x16
dont les voies sont le résultat d'un NON logique sur les voies des instances fournies (~a
).
Opérations de décalage
SIMD.Uint8x16.shiftLeftByScalar()
- Renvoie un nouvel
Uint8x16
dont les valeurs des voies sont décalées à gauche d'un certain nombre de bits (a << bits
). SIMD.Uint8x16.shiftRightByScalar()
- Renvoie un nouvel
Uint8x16
dont les valeurs des voies sont décalées à droite d'un certain nombre de bits.
Conversion
SIMD.Uint8x16.fromFloat32x4Bits()
- Crée un nouveau type de donnée
Uint8x16
avec une copie binaire à partir d'unfloat32x4
. SIMD.Uint8x16.fromFloat64x2Bits()
- Crée un nouveau type de donnée
Uint8x16
avec une copie binaire à partir d'unfloat64x2
. SIMD.Uint8x16.fromInt32x4Bits()
- Crée un nouveau type de donnée
Uint8x16
avec une copie binaire à partir d'unInt32x4
. SIMD.Uint8x16.fromInt16x8Bits()
- Crée un nouveau type de donnée
Uint8x16
à partir d'une copie binaire d'un vecteurInt16x8
. SIMD.Uint8x16.fromInt8x16Bits()
- Crée un nouveau type de donnée
Uint8x16
à partir d'une copie binaire d'un vecteurInt8x16
. SIMD.Uint8x16.fromUint32x4Bits()
- Crée un nouveau type de donnée
Uint8x16
à partir d'une copie binaire d'un vecteurUint32x4
. SIMD.Uint8x16.fromUint16x8Bits()
- Crée un nouveau type de donnée
Uint8x16
à partir d'une copie binaire d'un vecteurUint16x8
.
Prototype du SIMD
Les méthodes et propriétés suivantes sont rattachées à SIMD.Uint8x16.prototype
.
SIMD.Uint8x16.prototype.constructor
- Définit la fonction qui crée le prototype de l'objet SIMD
SIMD.Uint8x16.prototype.toLocaleString()
- Renvoie une chaîne localisée représentant le type SIMD et ses éléments. Elle surcharge la méthode
Object.prototype.toLocaleString()
. SIMD.Uint8x16.prototype.toString()
- Renvoie une chaîne représentant le type SIMD et ses éléments. Elle surcharge la méthode
Object.prototype.toString()
. SIMD.Uint8x16.prototype.valueOf()
- Renvoie la valeur primitive de l'objet SIMD.
SIMD.Uint8x16.prototype.toSource()
- Renvoie une chaîne de caractère représentant le code source. Elle surcharge la méthode
Object.prototype.toSource()
.
Exemples
SIMD.Uint8x16(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16); // Uint8x16[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] SIMD.Uint8x16(1, 2); // Uint8x16[1,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0] SIMD.Uint8x16(); // Uint8x16[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
Spécifications
Spécification | Statut | Commentaires |
---|---|---|
SIMD La définition de 'Uint8x16' dans cette spécification. |
Projet | Définition initiale. |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | Pas de support | Nightly build | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | Nightly build | Pas de support | Pas de support | Pas de support |