Вопросы по теме '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 просмотров
schedule
15.05.2022
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