2012-08-08 19 views
5

Sto scrivendo un paio di classi wrapper per SSE Intrinsics - principalmente per ottenere operazioni di geometria sicura per tipo, ma anche per aggiungere un paio di funzioni di convenienza. Tutte le mie funzioni e operatori sono in linea. In teoria, verranno tutti compilati direttamente nell'assemblaggio SSE grezzo (senza chiamate di funzione), ei miei elettroni non lasceranno mai i registri XMM.Come devo passare i dati SSE alle mie funzioni/operatori?

Come passare le mie classi SSE come argomenti per garantire questo risultato?

Non modifico mai i miei argomenti, quindi la scelta è principalmente tra il passaggio per valore o il passaggio per riferimento const. Presumo che un buon compilatore ottimizzerà entrambi gli stili con lo stesso codice. Ma non lo so per certo. Qualcuno con più esperienza nel settore può illustrare le migliori pratiche?

Grazie in anticipo!

risposta

4

O va bene per la maggior parte dei compilatori, ma se si desidera compilare il codice con Visual Studio, utilizzare i riferimenti const, poiché il compilatore di Visual Studio è in qualche modo privo di cervello e applica restrizioni ABI non necessarie anche quando la funzione è in linea.

+1

Grazie - Sono solo GCC al momento, ma è bello essere compatibile. Riferimenti Const è. Saluti! –