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

Использование встроенных функций C и трудности с выравниванием памяти с классами
Итак, я только начинаю использовать встроенные функции C в своем коде, и я создал класс, который в упрощенном виде выглядит следующим образом: class _Vector3D { public: _Vector3D() { aVals[0] = _mm_setzero_ps(); aVals[1] =...
1998 просмотров
schedule 20.05.2022

Есть ли хороший справочник по встроенным функциям ARM Neon?
В справочном руководстве ARM не содержится слишком подробного описания отдельных инструкций ( http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348b/BABIIBBG.html ). Есть что-нибудь более подробное?
21722 просмотров
schedule 18.03.2023

Помощь с умножением ассемблера/SSE
Я пытался понять, как улучшить свой код в очень важной паре строк: float x = a*b; float y = c*d; float z = e*f; float w = g*h; все a, b, c... являются числами с плавающей запятой. Я решил изучить использование SSE, но, похоже, не нашел...
1866 просмотров
schedule 03.08.2023

Нет встроенных функций xor gcc для ARM NEON
Я не смог найти никаких встроенных функций для простой операции xor. См .: http://gcc.gnu.org/onlinedocs/gcc/ARM-NEON-Intrinsics.html Неужели нет возможности использовать для этого NEON инструкции?
1401 просмотров
schedule 20.04.2022

Загрузить 8-битный uint8_t как uint32_t?
мой проект обработки изображений работает с изображениями в градациях серого. У меня процессорная платформа ARM Cortex-A8. Я хочу использовать НЕОН. У меня есть изображение в градациях серого (рассмотрите пример ниже), и в моем алгоритме мне...
4228 просмотров
schedule 31.07.2022

Вычисление ведущих нулей с внутренней функцией
Я пытаюсь оптимизировать некоторый код, работающий во встроенной системе (декодирование FLAC, Windows CE, MCU ARM 926). реализация по умолчанию использует макрос и таблица поиска: /* counts the # of zero MSBs in a word */ #define...
718 просмотров

gcc, встроенные функции simd и концепции быстрой математики
Привет всем :) Я пытаюсь понять несколько концепций, касающихся операций с плавающей запятой, встроенных функций SIMD / math и флага fast-math для gcc. В частности, я использую MinGW с gcc v4.5.0 на процессоре x86. Я уже некоторое время искал, и...
5000 просмотров
schedule 16.04.2022

Билинейный фильтр со встроенными функциями SSE4.1
Я пытаюсь найти достаточно быструю функцию билинейной фильтрации только для одного отфильтрованного образца за раз в качестве упражнения по привыканию к использованию встроенных функций - до SSE41 все в порядке. Пока у меня есть следующее:...
1347 просмотров
schedule 13.03.2023

Преобразование встроенного ASM во встроенный
Мне дали задание преобразовать небольшой фрагмент ассемблера во встроенный, чтобы проверить производительность. Я никогда не разрабатывал код ни для того, ни для другого, но я понимаю asm и c и читаю внутренний синтаксис. Но я не могу найти...
1560 просмотров
schedule 16.02.2023

Как выполнить матричную операцию 8 x 8 с помощью SSE?
Моя первоначальная попытка выглядела так (предположим, мы хотим умножить) __m128 mat[n]; /* rows */ __m128 vec[n] = {1,1,1,1}; float outvector[n]; for (int row=0;row<n;row++) { for(int k =3; k < 8; k = k+ 4) {...
961 просмотров
schedule 02.04.2024

Вызов встроенных/внутренних функций MSVC для математических функций C
Для GCC и Clang я могу легко сделать это: // absolute value inline constexpr int abs(const int number) { return __builtin_abs(number); } inline constexpr long abs(const long number) { return __builtin_labs(number); } inline...
1570 просмотров
schedule 26.10.2023

Загрузка и добавление SSE
Предположим, у меня есть два вектора, представленные двумя массивами типа double , каждый из которых имеет размер 2. Я хотел бы добавить соответствующие позиции. Итак, предположим векторы i0 и i1 , я бы хотел сложить i0[0] + i1[0] и i0[1] +...
2589 просмотров
schedule 23.06.2022

Как повернуть вектор SSE / AVX
Мне нужно выполнить операцию поворота с как можно меньшим тактовым циклом. В первом случае допустим __m128i как источник и тип назначения: source: || A0 || A1 || A2 || A3 || dest: || A1 || A2 || A3 || A0 || dest =...
6415 просмотров
schedule 10.11.2023

Совместимость типов данных с внутренними функциями NEON
Я работаю над оптимизацией ARM с использованием встроенных функций NEON из кода C ++. Я понимаю и справляюсь с большинством проблем с набором текста, но я застрял на этом: Инструкция vzip_u8 возвращает значение uint8x8x2_t (фактически массив...
2833 просмотров
schedule 13.05.2022

256-битный эквивалент AVX для _mm_load1_ps
С помощью SSE вы можете загрузить один float из памяти во все 4 слота __m128 с помощью встроенного _mm_load1_ps () При использовании SIMD шириной 256 бит с AVX, похоже, нет _mm256_load1_ps () для загрузки одного числа с плавающей запятой из памяти...
1569 просмотров
schedule 30.12.2022

Успешная компиляция инструкции SSE с помощью qmake (но SSE2 не распознается)
Я пытаюсь скомпилировать и запустить свой код, перенесенный из Unix в Windows. Мой код чистый C++ и не использует классы Qt. это нормально в Unix. Я также использую Qt Creator в качестве IDE и qmake.exe с -spec win32-g++ для компиляции....
2810 просмотров
schedule 25.09.2022

Как преобразовать регистр XMM чисел с плавающей запятой одинарной точности в целые числа?
У меня есть куча упакованных чисел с плавающей запятой внутри регистра XMM (с использованием встроенных функций SSE): __m128 xmm = _mm_set_ps(4.0f, 3.0f, 2.0f, 1.0f); Я хотел бы преобразовать все это в целые числа за один раз. Я нашел...
884 просмотров
schedule 02.08.2023

_mm_cvtsd_f64 аналог для чисел с плавающей запятой высшего порядка
Я играю с SIMD и задаюсь вопросом, почему нет аналога _mm_cvtsd_f64 для извлечения чисел с плавающей запятой высшего порядка из __m128d. GCC 4.6+ имеет расширение, которое позволяет добиться этого: __m128d a = ...; double d1 = a[0]; double d2 =...
508 просмотров
schedule 12.08.2022

Ошибка связывания при сборке без встроенных функций CRT, memcpy и memset
Я пытаюсь создать приложение как можно меньшего размера и при этом стараюсь избегать использования CRT, используя вызовы Win API вместо стандартных вызовов C / C ++. К сожалению, я все еще получаю единственную ошибку компоновщика: Error 2...
12089 просмотров
schedule 27.05.2023

Почему бы вам не получить доступ к полям __m128i напрямую?
Я читал это в MSDN , и там написано Вы не должны обращаться к полям __m128i напрямую. Однако вы можете увидеть эти типы в отладчике. Переменная типа __m128i сопоставляется с регистрами XMM[0-7]. Однако не объясняет, почему. Почему это?...
1531 просмотров
schedule 07.06.2022