Frage

ich einige Code schreibe und versuchen, es zu beschleunigen mit SIMD-Spezifika SSE2 / 3. Mein Code ist von solchen Art, die ich brauche einige Daten in ein XMM-Register zu laden und viele Male auf ihn einwirken. Wenn ich an dem Assembler-Code generierte suchen, scheint es, dass GCC die Datenrückspülung in den Speicher, um etwas anderes in XMM0 und XMM1 nachladen hält. Ich Kompilieren für x86-64 so dass ich 15 Register haben. Warum wird mit GCC nur zwei, und was kann ich tun, um es zu fragen mehr zu benutzen? Gibt es eine Möglichkeit, dass ich kann „pin“ einen gewissen Wert in einem Register? Ich fügte hinzu, die „Register“ Schlüsselwort meiner Variablendefinition, aber die erzeugte Assembler-Code identisch ist.

War es hilfreich?

Lösung

Ja, Sie können. Explicit Reg Vars spricht über die Syntax müssen Sie ein Pin Variable zu einem bestimmten Register.

Andere Tipps

Wenn Sie an dem Punkt, wo Sie einzelne Register für jede intrinsische sind spezifiziert, dann kann man auch nur die Montage Verzeichnis schreiben, vor allem gcc gegeben unangenehme Angewohnheit von intrinsics unnötig in vielen Fällen pessimizing.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top