AltiVec: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
викификация
слипшиеся абзацы
Строка 1:
'''AltiVec''' это набор [[SIMD]] (векторных) инструкций для работы с [[число с плавающей запятой|плавающей запятой]] и целочисленной арифметикой, разработанный и принадлежащий [[Apple Computer]], [[IBM]] и [[Motorola]] (известных, как [[AIM alliance]]). AltiVec реализован на различных версиях процессоров [[PowerPC]], как производства Motorola ([[PowerPC G4|G4]]), так и производства [[IBM]] ([[PowerPC G5|G5]]).
 
Само название AltiVec является зарегистрированной [[торговая марка|торговой маркой]] фирмы Motorola, поэтому Apple использует название '''Velocity Engine''', а IBM — '''VMX'''.
 
Строка 11 ⟶ 12 :
 
Современные версии [[GCC]], [[VisualAge|IBM Visual Age Compiler]] предоставляют набор функций для непосредственной работы с инструкциями AltiVec прямо из [[Си (язык программирования)|языка C]] и [[Си плюс плюс|C++]].
 
Существует специальный модификатор '''vector''' для спецификации типа переменной (например «vector unsigned char foo;» — вектор из шестнадцати 8-битных байтов). [[Полиморфизм в языках программирования|Перегруженные]] функции, такие как «vec_add» оперируют с векторными регистрами исходя из их содержимого, при этом проводя очень чёткий контроль типов. Векторные инструкции Intel-а никакого контроля за типами не производят и оперируют лишь размером вектора, не различая байты и слова. Такая халатность может привести к тому, что вектор слов будет сложен с вектором байт, полностью разрушив данные. Что бы такого не происходило, для архитектуры Intel, существует целая серия дублирующих друг друга инструкций вида: _mm_add_epi16 (x, y) — для сложения двух векторов слов, _mm_add_epi32 (x, y) для сложения двух векторов целых и т. п.