Puis-je définir un pointeur de fonction pour _mm_load_ps
, _mm_store_ps
et similaires?intel intrinsics - pointeurs de fonction à charger/stocker
Je pense à quelque chose comme
float* x0; //param
...
__m128 (*load_x0)(float const *mem);
if((unsigned long)x0 & 15) load_x0 = &_mm_loadu_ps;
else load_x0 = &_mm_load_ps;
mais qui mène à
référence non définie à
_mm_load_ps
référence non définie à
_mm_loadu_ps
Intéressant. Donc, je gagne à utiliser la charge alignée lorsque cela est possible, mais j'ai besoin de payer un surcoût pour un appel de fonction supplémentaire. Vous pensez que cela va payer? – User1291
@ User1291 Non, ce ne sera pas le cas. Il n'y a pas de différence entre les instructions alignées et non alignées (lorsqu'elles sont utilisées sur des données alignées) sur toutes les microarchitectures à l'exception de quelques très anciennes. – fuz
@ User1291 Utilisez simplement des charges non alignées pour tout et tout ira bien. Benchmark en cas de doute. – fuz