Gibt es in AVX irgendein spezielles Makro, das hilft, die direkte Konstante für _mm256_shuffle_*
intrinsics zu konstruieren, wie _MM_SHUFFLE(..)
für sein SSE-Gegenstück? Ich kann keine finden.Makro zum Generieren von Immediaten für AVX shuffle intrinsics
1
A
Antwort
3
Sie verwenden immer noch _MM_SHUFFLE()
für Shuffles, die den Steuereingang als 8bit sofort nehmen. z.B. _mm256_shuffle_epi32
(vpshufd
) mischt das gleiche auf beiden Spuren.
_MM_SHUFFLE(dd,cc,bb,aa)
packt nur die niedrigen 2 Bits von jedem arg in 0bddccbbaa
.
Sie können _MM_SHUFFLE(1,1,1,1)
(Broadcast-Element 1) als 0b01010101
, d. H. 0x55
schreiben.
Sie können C++ 14 Trennzeichen (oder was auch immer sie genannt werden) verwenden, um es als 0b01'01'01'01
für bessere menschliche Lesbarkeit zu schreiben, insb. in Fällen, in denen jedes Element anders ist.
Verwandte Themen
- 1. Intel AVX intrinsics: irgendwelche Kompatibilität Bibliothek aus?
- 2. Fast dot Produkt mit SSE/AVX intrinsics
- 3. Wie überprüft man mit Intel-Intrinsics, ob AVX-Erweiterungen von der CPU unterstützt werden?
- 4. AVX float4/double4 struct
- 5. Testen für Builtins/intrinsics
- 6. Intel intrinsics assembly code
- 7. Intrinsics für CPUID wie Informationen?
- 8. Hibernate zum Generieren von Indizes für Fremdschlüssel
- 9. Tools zum Generieren von Einheitenabhängigkeiten für Delphi
- 10. AVX2 VPSHUFB Emulation in AVX
- 11. Makro zum Formatieren von Zellen
- 12. Wie kann SSE/SSE2/AVX/AVX2/AVX-512/AVX-128-FMA/KCVI Verfügbarkeit zur Kompilierzeit erkannt werden?
- 13. Mit VBA-Makro-Funktionen zum Einfügen von VS nur Makro
- 14. AVX, Horizontale Summe der Einzelpräzision Komplexe Zahlen?
- 15. Javascript-Methodenaufrufcode mit ClojureScript-Makro generieren?
- 16. SIMD Mathematikbibliotheken für SSE und AVX
- 17. AVX 256-Bit-äquivalent für _mm_load1_ps
- 18. Frage zum round_up Makro
- 19. RyuJIT macht SIMD intrinsics nicht voll aus
- 20. Zufälligkeit von Shuffle in Python
- 21. Makro zum Löschen von Überschriften in Word
- 22. Optimieren von Code mit Intel SSE-Intrinsics für die Vektorisierung
- 23. vreinterpret NEON Intrinsics Problem
- 24. Equivalent von SSE unpacklo_ps/unpackhi_ps in AVX (für Doppelzimmer)
- 25. Tool zum Generieren von XML-Datei von Xsd (zum Testen)
- 26. Verwenden von Twig zum Generieren von JSON
- 27. Aufruf Fortran intrinsics in gdb
- 28. Shuffle Elemente von __m256i Vektor
- 29. Tensorflow AVX Unterstützung
- 30. Shuffle Groups Algorithmus
Ich denke, base-4 ist in diesem Fall besser als binär. Zwei base-4 Ziffern sind eine Base-16 (hex) Ziffer. Wenn Sie zum Beispiel 3,1,1,1 shuffle, wäre das 3 * 4 + 1, 1 * 4 + 2 = 0xda. Auf der anderen Seite ist _MM_SHUFFLE grundsätzlich base-4 und besser lesbar. –
@Zboson: Können Sie Base-4 in C verwenden? Ich benutze _MM_SHUFFLE in C, aber '0baabbccdd' in asm. Ich denke, in einer '.S'-Datei, die gcc vor der Assemblierung durch CPP läuft, könnten Sie die Makrodefinition für _MM_SHUFFLE kopieren. –
Nein, ich mache es in meinem Kopf und schreibe den Hexwert aus oder schreibe einen Kommentar. Aber '_MM_SHUFFLE' ist im Grunde ein Basis-4-Makro. –