Ich habe eine Menge über Altivec Register gehört, aber ich finde es nicht einmal auf einer POWER9 ISA. In diesem Dokument finde ich nur VR- und VSR-Register unter Kapitel 6 "Vektor-Einrichtung" und Kapitel 7 "Vektor-Skalar-Gleitkomma-Operationen".VSX? VMX? Altivec? VR? VSR ?! Wie hängen diese PowerPC SIMD Akronyme zusammen?
Auf ABI bemerkte ich, wie die Register physisch zugeordnet:
und ich habe immer noch nicht, warum es zwei Gruppen gibt. Ist Altivec Erbe?
Soweit ich verstand, ist die folgende, was passiert ist:
- AltiVec/VMX (Vector Multimedia Extensions) ist eine alte SIMD-Technologie für PowerPC. Ich sehe es als das alte Intel MMX.
- Die neuen VSX (Vector Scalar eXtensions) sind ein Upgrade davon, aber um die Kompatibilität mit Altivec zu vermeiden, blieben sie nur 32 Register (VSR32-VSR63) und Altivec-Operationen können die anderen VSR0-VSR31 nicht verarbeiten. Die VSX-Befehle können jedoch in allen 64 Registern (VSR0-VSR63) arbeiten. Ich sehe es als die neue Intel SSE.
Ist das korrekt?
Was meinen Sie mit "Es wäre nicht ratsam, VMX- und VSX-Anweisungen in einem einzigen Prozess zu mischen, es sei denn, Sie sind vorsichtig bei der Zuweisung von Registern"? Speziell für die Inline-Assemblierung von gcc können Sie den Modifizierer% x verwenden, um zu kennzeichnen, dass dasselbe Vektorregister in VSX konvertiert werden muss, wie [in diesem Beispiel] (https://github.com/PPC64/sha2-le/). Blob/Master/sha512_compress.C# L389). Höchstens dachte ich, dass es etwas Leistungsproblem auf Multi Threading haben könnte, aber Einzelprozess ?! – gut
@gut: mehr, dass Sie nicht unbeabsichtigt eines der Werte des VMX-Registers durch ein Schreiben in ein VSX-Register (und umgekehrt) überschreiben möchten. –