Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Visual Studio 2010 SP1 wird benötigt.
Microsoft-spezifisch
Generiert die XOP-Anweisung vpperm, um Bytes aus seinen ersten zwei Quellen auszuwählen und sie optional zu transformieren.
__m128i _mm_perm_epi8 (
__m128i src1,
__m128i src2,
__m128i selector
);
Parameter
[in] src1
Ein 128-Bit-Parameter, der sechzehn Bytes enthält.[in] src2
Ein 128-Bit-Parameter, der sechzehn Bytes enthält.[in] selector
Ein 128-Bit-Parameter, der Bytes aus src1 und src2 sowie optional eine Transformation auswählt, die auf das ausgewählte Byte angewendet werden soll.
Rückgabewert
Ein 128-Bit-Ergebnis-r, der aus src1 und src2 ausgewählte und optional transformierte Bytes enthält.
Anforderungen
Intrinsisch |
Architektur |
|---|---|
_mm_perm_epi8 |
XOP |
Headerdatei <intrin.h>
Hinweise
Für jedes Byte in selector wählen die niederwertigen Bits ein Byte aus src1 oder src2 aus. Die Werte von 0 bis 15 wählen Byte 0 bis 15 von src1 aus, während die Werte von 16 bis 31 Byte 0 bis 15 von src2 auswählen. Die höherwertigen Bits jedes Bytes in selector bestimmen, welche Transformation, sofern eine festgelegt wurde, auf das ausgewählte Byte angewendet werden soll.
Wert der höherwertigen 3 Bits des Selektors |
Ausgewählte Transformation |
|---|---|
000b |
Keine Transformation |
001b |
Umkehrung (Einerkomplement) des Quellbytes |
010b |
Bitumkehr-Quellbyte |
011b |
Mit Bitumkehr umgekehrtes Quellbyte |
100b |
Ergebnisbyte auf 0x00 festlegen |
101b |
Ergebnisbyte auf 0xFF festlegen |
110b |
Replizieren von höchstwertigem Byte des Quellbytes |
111b |
Replizieren von umgekehrtem höchstwertigem Byte des Quellbytes |
Die vpperm-Anweisung ist Teil der XOP-Anweisungsfamilie. Bevor Sie diese systeminterne Funktion verwenden, müssen Sie sicherstellen, dass der Prozessor diese Anweisung unterstützt. Um die Hardwareunterstützung für diese Anweisung zu bestimmen, rufen Sie die systeminterne Funktion __cpuid mit InfoType = 0x80000001 auf, und prüfen Sie Bit 11 von CPUInfo[2] (ECX). Dieses Bit ist 1, wenn die Anweisung unterstützt wird, und andernfalls 0.
Beispiel
#include <stdio.h>
#include <intrin.h>
int main()
{
__m128i a, b, selector, d;
int i;
for (i = 15; i >= 0; i--) {
a.m128i_u8[i] = i; // 0x0f0e0d0c...
b.m128i_u8[i] = (i << 4) | i; // 0xffeeddcc...
}
selector.m128i_u64[1] = 0xfedcba9876543210ll;
selector.m128i_u64[0] = 0x0011223344556677ll;
d = _mm_perm_epi8(a, b, selector);
printf_s("%016I64x %016I64x\n", d.m128i_u64[1], d.m128i_u64[0]);
}
Siehe auch
Referenz
Weitere Ressourcen
In Visual Studio 2010 SP1 hinzugefügte systeminterne XOP-Funktionen
Änderungsprotokoll
Datum |
Versionsgeschichte |
Grund |
|---|---|---|
|
März 2011 |
Diesen Inhalt hinzugefügt. |
SP1-Funktionsänderung. |