Вопросы по теме 'intrinsics'

Инструкции asm x86 max/min?
Существуют ли какие-либо инструкции asm, которые могут ускорить вычисление минимального/максимального вектора двойных/целых чисел в архитектуре Core i7? Обновление: Не ожидал таких развернутых ответов, спасибо. Итак, я вижу, что max/min можно...
12358 просмотров
schedule 13.07.2023

Эквивалент InterlockedIncrement в Linux / gcc
Это был бы очень простой вопрос (можно было бы продублировать), но я не смог его найти. Win32 API предоставляет очень удобный набор атомарных операций (как встроенных функций), таких как InterlockedIncrement , который испускает lock add код x86....
17712 просмотров
schedule 03.08.2022

Как изменить порядок векторных данных с помощью встроенных функций ARM Neon?
Это особенно связано с кодированием ARM Neon SIMD. Я использую инстринсики ARM Neon для определенного модуля в видеодекодере. У меня есть векторизованные данные: В регистре Neon есть четыре 32-битных элемента, скажем, Q0, размер которых...
6681 просмотров
schedule 06.06.2022

Встроенные функции Intel AVX: есть ли библиотека совместимости?
Есть ли встроенная библиотека Intel AVX? Я ищу что-то похожее на заголовок sse2mmx.h, который откатывается к встроенным функциям MMX, если целочисленные встроенные функции SSE2 недоступны во время компиляции. Таким образом, если бы у меня была...
2135 просмотров
schedule 04.04.2023

Как использовать встроенные функции умножения и накопления в ARM Cortex-a8?
как использовать встроенные функции Multiply-Accumulate, предоставляемые GCC? float32x4_t vmlaq_f32 (float32x4_t , float32x4_t , float32x4_t); Кто-нибудь может объяснить, какие три параметра я должен передать этой функции. Я имею в виду...
14486 просмотров
schedule 12.03.2022

Встроенные функции WinAPI _Interlocked* для char, короткие
Мне нужно использовать функцию _Interlocked*** для char или short, но в качестве входных данных требуется длинный указатель. Вроде есть функция _InterlockedExchange8, документации по ней не вижу. Похоже, это недокументированная функция. Также...
682 просмотров
schedule 05.02.2023

Удалить встроенные функции SSE2 в Visual C++
Кто-нибудь знает, как удалить все встроенные функции SSE2 из исходников (в Visual C++)? В некоторых местах, вероятно, есть несколько, так как я использую SSE2. Теперь я хотел бы снова перенести свой проект на SSE. Интересно, смогу ли я #define...
314 просмотров
schedule 26.08.2023

Неожиданный результат от AVX _m256_unpack*_ps распаковать встроенный
Я пытаюсь использовать встроенные инструкции распаковки AVX _m256_unpacklo_ps и _m256_unpackhi_ps для чередования 16 значений с плавающей запятой. Результаты, которые я получаю, странные, либо потому, что я не понимаю, как распаковка должна...
1381 просмотров
schedule 11.05.2023

Разделить на число с плавающей запятой, используя встроенные функции NEON
Я обрабатываю изображение на четыре пикселя в то время, это на armv7 для приложения Android. Я хочу разделить вектор float32x4_t на другой вектор, но числа в нем варьируются примерно от 0.7 до 3.85 , и мне кажется, что единственный способ...
6131 просмотров
schedule 16.07.2022

сравнение с поплавками в неоновых внутренностях
Я думаю, что это глупая проблема, но я пытался в течение дня решить ее без везения, так что вот. у меня есть регистр из четырех векторов (float32x4), и я хочу сделать какой-то процесс для некоторых из них, а другой я хочу установить на 0....
1220 просмотров
schedule 11.04.2023

Используйте как встроенные функции SSE2, так и встроенный ассемблер gcc
Я попытался смешать встроенные функции SSE2 и встроенный ассемблер в gcc. Но если я укажу переменную как xmm0 / register в качестве входных данных, тогда в некоторых случаях я получаю ошибку компилятора. Пример: #include <emmintrin.h>...
3546 просмотров
schedule 29.01.2024

Доступ к произвольным 16-битным элементам, упакованным в 128-битный регистр
С помощью встроенных функций компилятора Intel, учитывая 128-битный регистр, упаковывающий 8 16-битных элементов, как мне получить доступ (дешево) к произвольным элементам из регистра для последующего использования _mm_cvtepi8_epi64 (знак расширяет...
883 просмотров

Можно ли приводить числа с плавающей запятой непосредственно к __m128, если они выровнены по 16 байтам?
Безопасно/возможно/рекомендуется ли приводить числа с плавающей запятой непосредственно к __m128 , если они выровнены по 16 байтам? Я заметил, что использование _mm_load_ps и _mm_store_ps для «обертывания» необработанного массива добавляет...
11245 просмотров
schedule 02.07.2023

Использование встроенных функций ARM NEON для добавления альфы и перестановки
Я разрабатываю приложение для iOS, которое должно довольно быстро преобразовывать изображения из RGB -> BGRA. Я хотел бы использовать встроенные функции NEON, если это возможно. Есть ли более быстрый способ, чем простое назначение компонентов?...
2496 просмотров
schedule 09.05.2022

Как загрузить пиксельную структуру в регистр SSE?
У меня есть структура 8-битных пиксельных данных: struct __attribute__((aligned(4))) pixels { char r; char g; char b; char a; } Я хочу использовать инструкции SSE для вычисления определенных вещей на этих пикселях (а именно,...
5503 просмотров
schedule 23.05.2022

Суммируем 3 дорожки в NEON float32x4_t
Я векторизую внутренний цикл с помощью встроенных функций ARM NEON (llvm, iOS). Обычно я использую float32x4_t s. Мои вычисления заканчиваются необходимостью суммировать три из четырех чисел с плавающей запятой в этом векторе. В этот момент я...
3036 просмотров
schedule 20.07.2023

Не удалось загрузить значения с плавающей запятой, используя NEON Intrinsics
Я не могу загрузить значения с плавающей запятой в 128-битные регистры NEON, несмотря ни на что! Я пытался всеми возможными способами загрузить числа с плавающей запятой, но регистры остаются нулевыми (найдено с помощью отладки). /*...
1531 просмотров
schedule 02.07.2022

С++ встроенные функции SSE2
Я только что узнал, что есть способ добиться параллелизма с помощью встроенных функций. Я нашел следующий код и хотел пройтись по нему, но многое понял. Я пытался сделать операции с одинарной точностью, но как я могу это сделать? #include...
1662 просмотров
schedule 10.03.2023

SIMD и разница между упакованной и скалярной двойной точностью
Я читаю руководство Intel по встроенным функциям при реализации поддержки SIMD. У меня есть несколько затруднений, и мои вопросы приведены ниже. __m128 _mm_cmpeq_ps (__m128 a, __m128 b) в документации говорится, что он используется для...
11455 просмотров
schedule 11.02.2023

Как загрузить два набора из 4 шортов в регистр XMM?
Я только начинаю работать со встроенными функциями SSE, используя Visual C++ 2012, и мне нужны некоторые указатели (без каламбура). У меня есть два массива, содержащие по 4 signed short в каждом (таким образом, каждый массив 64-битный, всего...
928 просмотров
schedule 01.08.2022