So bekomme ich diesen Fehler beim Versuch, Dolphin zu kompilieren. Ich habe clang-3.7 und 3.8 zusammen mit GCC 5.2 und 6.3 versucht. Was komisch ist, ist dass alle anderen _mm Funktionen zu funktionieren scheinen, es ist nur dieser.Fehler: Verwendung von undeclared Kennung '_mm_shuffle_epi8' Ubuntu 16.04 Ryzen
Antwort
SSE2 ist Grundlage für x86-64, weshalb andere _mm
Funktionen arbeiten (Sie wahrscheinlich versucht, nur SSE2-Funktionen, keine anderen SSE3/SSSE3/SSE4 Funktionen wie _mm_abs_epi8
oder _mm_cvtepi16_epi32
).
Sie müssen -mssse3
(aktiviert durch -march=native
oder -march=znver1
in Ihrem Fall) SSSE3 intrinsics mit gcc/Klirren, im Gegensatz zu MSVC verwenden.
Beachten Sie, dass -mssse3
stellt nicht -mtune=
, aber -march=
Tuning nicht gesetzt ist, so ist es besser, -march=native
als zu verwenden, um nur ein paar ISA-Erweiterungen mit -mpopcnt -msse4.1
oder etwas zu ermöglichen, vor allem, wenn Sie planen zu laufen die binäre auf einer Ziel-CPU.
Zum Beispiel AVX2 zu ermöglichen, ist es wahrscheinlich besser -march=haswell
oder -march=znver1
zu verwenden, da -mavx2
nicht das -mtune=generic
Verhalten von -mavx256-split-unaligned-load
außer Kraft setzen, auch wenn keine AVX2 tragende CPUs davon profitieren (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80568). d. h., -mtune=generic
verwendet immer die vollständig generischen Abstimmungseinstellungen, anstatt zu tun, welche CPUs die aktivierten Erweiterungen unterstützen.
Sandybridge profitiert von -mavx256-split-unaligned-load
/...store
, aber es unterstützt nur AVX, nicht AVX2. Und selbst dann, wenn die Daten zur Laufzeit tatsächlich falsch ausgerichtet sind, möchten Sie das vielleicht nicht, wenn Ihre Daten zu 99% der Zeit ausgerichtet sind.
- 1. C++ Cout gibt undeclared Kennung
- 2. WinApi Commctrl Trackbar-Kennung undeclared
- 3. Fehler bei der Verwendung von luasocket in Eclipse (Ubuntu 16.04)
- 4. Swift auf Ubuntu: Verwendung von undeclared Typ 'NSFileHandle'
- 5. Ubuntu 16.04 lightdm Segmentierung Fehler
- 6. Android ndk r15b - Posix_memalign() undeclared Kennung
- 7. Verwendung von ungelöster Kennung in swift mit ubuntu 14.04
- 8. Verbindung mit Ubuntu 16.04 unter Verwendung von Ansible nicht möglich
- 9. "Int32 undeclared" gcc Fehler
- 10. Ubuntu 16.04 Pufferüberlauf
- 11. mathtex auf Ubuntu 16.04
- 12. ubuntu 16.04 Update-Fehler im Zusammenhang
- 13. Transparenter Windows Fehler in PHPStorm, Ubuntu 16.04
- 14. "Verwendung von nicht deklarierter Kennung 'holdDown'" Fehler
- 15. Fehler nach Selbstaktualisierung NuGet Ubuntu 16.04
- 16. Fehler im Paket gnuplot fackel7? (ubuntu 16.04)
- 17. Android Studio Open JDK Fehler Ubuntu 16.04
- 18. Fehler: "Verwendung der unaufgelösten Kennung"
- 19. Linker Fehler: g ++ 5.4 Ubuntu 16.04
- 20. Ubuntu 16.04 Fehler mit apt-get
- 21. Mininet Fehler in Ubuntu 16.04, während Bandbreite
- 22. Auf Ubuntu 16.04, v8 bauen Fehler
- 23. Laravel 5.5 installieren auf Ubuntu 16.04 Fehler
- 24. Ubuntu 16.04 Fehler mit apt-get update
- 25. Fehler beim caffe auf Ubuntu installieren 16.04
- 26. Run PHPunit Laravel Fehler auf Ubuntu 16.04
- 27. Kestrel gescheitert UBUNTU 16.04
- 28. Verwendung von undeclared Identifier Fehler in einfachen Snake-Spiel
- 29. Installieren von Rmpi unter Ubuntu 16.04 VirtualBox
- 30. undeclared Bezeichner beim Versuch, libsodium-php auf Ubuntu zu installieren 16.04
Welche anderen intrinsic haben Sie versucht? '_mm_shuffle_epi8' ist in SSSE3; nimmst du '' oder '' '? Kompilierst du mit "-mssse3"? –
nemequ
Ich habe hinzugefügt und ich habe diese Flagge ausprobiert und sie weigert sich immer noch. Ich habe das Gefühl, dass mir etwas fehlt, oder wenn GCC/clang diese Funktion für die Zen-Architektur nicht aktiviert hat. –
Mitchell
Wenn Sie SSSE3 für ein x86-Ziel angeben, sollte es nicht wichtig sein, welche CPU Sie verwenden. Compiler müssen Code selbst für Ziele generieren, die sie nicht wirklich unterstützen. Stellen Sie sicher, dass '__SSSE3__' im Präprozessor definiert ist (was -mssse3 tun sollte). Beachten Sie auch, dass es ssse3 nicht sse3 ist ... – nemequ