Реклама

Кто такой Вфмаддрд231 пенда?

#Статья #Commissions #Пункты #Комментарии

Статья URL: https://purplesyringa.moe/blog/who-is-vfmaddrnd231pd/Commissions: httpss://news.ycombinator.com/item?id=50063138 Пункты: 66 # Комментарии: 1

vfmaddrnd231pd - это уникальная инструкция из набора инструкций FMA. Большинство инструкций в этом наборе имеют мнемонику, как vfmadd231pd, но здесь rnd означает что-то очень специфическое. Руководство по разработке программного обеспечения Intel документирует его следующим образом: VFMARDND231PD – Пусковое мультипликационное добавление упаковочных двойственных прецизионных плавучих значений с управлением округлением [...] Байт определяет несколько битовых полей, которые контролируют круглое движение, DAZ, FTZ и исключение (см. таблицу 5-3). Большинство инструкций х86, касающихся плавающей точки, используют глобальный режим округления и настройки, которые изменяются довольно медленно. Но vfmaddrnd231pd позволяет контролировать режим округления на основе каждого инструкции, а поскольку FMA может воспроизводить сложение, вычитание и умножение, этот механизм эффективно допускает любой арифметический контроль за округлением без AVX-512 – создавая некоторые алгоритмы, которые опираются на округление невероятно быстрее. Или так, если бы эта инструкция действительно существовала. Сборщик GNU не узнает его. Intel C/C++ Compiler internationals_mm_fmaddround_pd и _mM256_fmedadbarl_ pd, о которых упоминается SDM, отсутствуют не только в Кланге, но также и в МТП. Попытка собрать инструкции вручную из списка кодов SDM открывает другой вопрос: VEX.DDS.128.66,0F3A.W1 B8 /r/ib VEX является префиксом VEX, но что такое DDS? Этот код - единственное упоминание DDS в SDM, и этот ответ SO…