дня уже пытаюсь проблему решить и не могу понять корректный ли машинный код на выходе получаю.
Из открытого максимум только это - http://mcst.ru/elbrus_prog
см. тж. vk.com/e2knmcprog
Благодарю, кажется это то что надо
Для простых и средних случаев должно полностью хватить. Ещё можно глянуть в файл e2kintrin.h, если наткнётесь на векторные или 128-битные инструкции. Там описания слишком короткие, но почти всё можно смотреть на Intel Intrinsics Guide — инструкции аналогичные. Способ построения аналогии можно найти в e2kbuiltin.h. Для продвинутых случаев (типа написания эмулятора), говорят, открытой информации совсем не хватает.
а про OpenE2K человеку ж уже вроде говорили? (про elbrus_prog сразу, помнится, сказали)
у меня как раз простой случай, просто хочу проверить что LLVM правильно перевёл инструкции в ассемблер.
То, что получилось узнать эмпирическим путём - https://github.com/nrdmn/elbrus-docs
Кстати есть замечательный проект SIMD Everywhere https://github.com/simd-everywhere/simde. Который делает возможным использование SIMD intrinsics на любой платформе, даже если она их не поддерживает (например arm/aarch64). Это позволяет писать более оптимизированный код там где требуется очень большая скорость вычислений, используя уже привычные инструкции, с которыми многие программисты так или иначе сталкивались на x86. Было бы здорово в будущем портировать её и под e2k, возможно я бы даже этим мог заняться, но только не прямо сейчас, чуть позже, когда с компилятором LDC закончу.
о, это даже интересней чем их использовать, даже там , где они есть..
https://github.com/simd-everywhere/simde/pull/700 :)
@makise_homura запатчил github.com/simd-everywhere/simde/pull/700 — переживаю за апстрим, PR завис в состоянии "почти-почти"... вообще заглядывайте на altlinux.org/эльбрус/upstream, там есть ссылки на уже портированное (понятно, что подмножество) и уже смерженое (аналогично)
Обсуждают сегодня