Один весьма хороший автор почему-то под замком, потому не буду называть (хотя все догадаются) начал строить процессор для операций над кватернионами. Мне идея кажется сомнительной уже просто потому что в реальных задачах конкретные формулы емнимп довольно сильно упрощаются - отчасти от того что при умножении на вектор вещественная часть у вектора - 0 и там довольно много операций "уходит" уже поэтому, отчасти - потому что емнимп уже в том же вращении пространства - qvq-1 уже много довольно чего не только сокращается от умножения на 0 но и выносится за скобки.
В общем возникает вопрос - что лучше - аппаратная ускорялка или хорошо оптимизированный код под конкретную расчетную формулу.
В связи с этим вспомнилось как нам где-то в конце 90-х заказали запрограммировать алгоритмы gsm-ного канала для некоего опытного DSP, кой надизайнили европейские (бельгийские точнее) мозги.
Там были и спецкоманды для декодирования сверточного кода, и для решеточного декодирования и что-то еще. Увы - оказалось что сверточные коды гораздо быстрее декодируются если просто выписать это как огромную 32-битную логическую функцию (в духе известной оптимизации для игры жизнь), а алгоритм витерби тоже получается эффективнее если его вдумчиво расписать по командам "ручками" - и то и другое естественно с учетом необходимости команды шедулить.
В общем все без исключения "суперкоманды" оказались чуть более чем бесполезны. При этом простейшей для реализации "в железе" - хардкодной псевдослучайной перестановки битов в блоке там как раз не было (хотя вот ее программная реализация жрала чуть не половину ресурсов - потому что в 512-битном блоке переставить битики в соответствии с действительно псевдослучайной жестко заданной перестановкой - задачка вычислительно та еще).
После этого я собственно и слабо стал верить в мегаидеи спецкоманд и спецпроцессоров - в принципе это возможно - DSP с того и живут - но облажаться придумывая мегакоманды куда проще чем не облажаться.