Как стать автором
Обновить

Шпаргалка по SIMD-инструкциям, теперь и для .NET Core

Время на прочтение2 мин
Количество просмотров6.7K
Ни для кого не секрет, что в дотнет завезли интринсики. Я писал об этом и до того, как они появились и после. Плюс ещё посты на Хабре, например этот. И всё, казалось бы, замечательно, если бы не одно «но»: называются эти интринсики по-дотнетовски, а совсем не так как в ассемблере или C++.

Из-за этого трудно воспользоваться уже готовым векторизованным кодом, просто портировав его с плюсов. Так же тяжело будет и с адаптацией найденных на stackoverflow ответов и примеров )) Ведь для каждого вызова надо найти новое дотнетное название. А сделать это не так легко — если в MSDN искать называние плюсового интринсика, то найдутся только плюсовые статьи, и, может быть, где-то в самом конце то, что нам нужно.

Когда мне приходилось писать SIMD-код на плюсах, я пользовался очень хорошим ресурсом — officedaytime, где кратко и наглядно представлены все основные инструкции для x86-платформы. Я решил, что неплохо было бы заполучить такую шпаргалку и для дотнета.



Итак, не буду лить много воды, вот эта страница, адаптированная под netcore.

Как это было сгенерировано


Очевидно, я не сидел и упорно правил эту таблицу руками. К счастью в подсказке для многих (но не всех) методов .NET Core написан соответствующий интринсик, как он называется в плюсах. А ещё удобно, что все эти подсказки сгенерированы в XML-Doc в файле, который лежит рядом со сборкой: System.Runtime.Intrinsics.xml.

Для работы с HTML я взял старый добрый HtmlAgilityPack, который не только до сих пор отлично работает, но и активно поддерживается.

Немного неудобств доставили интринсики создания векторов, а так же обнуления. Для них пришлось добавить отдельные константы в коде генератора.

И ещё инструкции сдвига _mm_slli_si128 и _mm_srli_si128 почему-то в дотнете названы по другому, пришлось пропатчить и их.

Код генератора доступен здесь https://gist.github.com/.....82fadb1

Спасибо за внимание!

Если найдёте ошибки или неточности, пожалуйста сообщите.
Теги:
Хабы:
Всего голосов 20: ↑20 и ↓0+20
Комментарии6

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
11 сентября
Митап по BigData от Честного ЗНАКа
Санкт-ПетербургОнлайн
14 сентября
Конференция Practical ML Conf
МоскваОнлайн
19 сентября
CDI Conf 2024
Москва
24 сентября
Конференция Fin.Bot 2024
МоскваОнлайн
25 сентября
Конференция Yandex Scale 2024
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн