Architektura AMD64 programisty Manual Volume 1: Application Programming strona 226 mówi dotyczące instrukcje SSE:64 SSE typy danych
Procesor nie sprawdza typ danych argumentów instrukcji przed wykonaniem instrukcji. To sprawdza je tylko w miejscu wykonania. Na przykład, jeśli procesor wykonuje arytmetyczną instrukcję , która wymaga operandów o podwójnej precyzji, ale jest dostarczany z operandami o pojedynczej dokładności, za pomocą instrukcji MOVx , procesor najpierw przekształci operandy z pojedynczej precyzji na podwójną precyzję przed wykonaniem operacji arytmetycznej. , a wynik będzie poprawny. Jednak wymagana konwersja może spowodować obniżenie wydajności.
Nie rozumiem tego; Wydaje mi się, że rejestry mmm zawierają po prostu 256 bitów, które każda instrukcja interpretuje zgodnie z oczekiwanymi operandami, to zależy od ciebie, aby upewnić się, że są właściwe typy, a w opisanym scenariuszu procesor pracowałby z pełną prędkością i cicho zła odpowiedź.
Czego mi brakuje?
Być może odnoszą się one do faktu, że jeśli użyjesz 'movaps' do załadowania podwojenia, to i tak zadziała? To trochę dziwne, jak to uczynili, zwłaszcza, że nie ma konwersji, ale nie widzę, co jeszcze mogą oznaczać .. – harold