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

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

Время на прочтение2 мин
Количество просмотров6.6K
Ни для кого не секрет, что в дотнет завезли интринсики. Я писал об этом и до того, как они появились и после. Плюс ещё посты на Хабре, например этот. И всё, казалось бы, замечательно, если бы не одно «но»: называются эти интринсики по-дотнетовски, а совсем не так как в ассемблере или 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
Комментарии6

Публикации

Изменить настройки темы

Истории

Работа

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

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн