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

Какой самый эффективный способ умножить 4 числа с плавающей запятой на 4 числа с плавающей запятой с помощью SSE?
В настоящее время у меня есть следующий код: float a[4] = { 10, 20, 30, 40 }; float b[4] = { 0.1, 0.1, 0.1, 0.1 }; asm volatile("movups (%0), %%xmm0\n\t" "mulps (%1), %%xmm0\n\t" "movups %%xmm0, (%1)"...
1765 просмотров
schedule 09.12.2022

Visual Studio 2010 и SSE 4.2
Я хотел бы знать, что необходимо установить в Visual Studio 2010, чтобы включить SSE 4.2? Я хотел бы использовать его из-за оптимизированного POPCNT... Как проверить, все ли настройки в порядке? Спасибо ну, я пытался использовать ваше...
2378 просмотров
schedule 24.02.2023

Инструкция SSE2 для загрузки целых чисел в обратном порядке
Есть ли инструкция SSE2 для загрузки 128-битного векторного регистра int из буфера int в обратном порядке?
4609 просмотров
schedule 20.12.2022

Умножение SSE 2 64-битных целых чисел
Как умножить два 64-битных целых числа на два других 64-битных целых числа? Я не нашел ни одной инструкции, которая может это сделать.
3995 просмотров
schedule 04.03.2024

Перемещение числа четверного слова в регистры xmm
Я пытаюсь переместить число из 64-битного регистра в регистр xmm для выполнения арифметических операций. Мои мысли были такими: movq xmm1, r14 В моей программе r14 держит счетчик, и мне нужно, чтобы он был перемещен в xmm1, чтобы я мог...
2395 просмотров
schedule 27.03.2023

Встроенная поддержка Intel для процессора Atom cloverview
У меня есть приложение, которое было разработано для процессоров Sandbridge, использующих SSE в AVX, теперь я хочу, чтобы это же приложение работало на процессорах Atom. Я недавно просматривал сеть для внутренней поддержки процессоров Atom...
340 просмотров
schedule 04.08.2023

Встроенные функции SSE2 — сравнение 2 __m128i, содержащих по 4 int32 в каждом, чтобы увидеть, сколько из них равны
Я впервые погружаюсь во встроенные функции SSE2 и не знаю, как это сделать. Я хочу сравнить 4 int32 с 4 другими int32 и подсчитать, сколько из них равны. Итак, я прочитал свои первые 4 int32, установил их в __m128i, сделал то же самое для второго...
653 просмотров
schedule 03.11.2022

Нарушение доступа к сборке movdqa
В настоящее время я пытаюсь написать функцию на ассемблере и хочу переместить 128 бит строки, расположенной по адресу памяти, хранящемуся в rdx , в регистр xmm1 . Если я использую movdqa xmm1, [rdx] , я получаю исключение нарушения прав доступа...
818 просмотров
schedule 10.03.2023

Внутренняя проблема загрузки Intel
Цель кода — вычесть из каждого символа строки str значение в массиве ключей. Невекторизованная версия программы соответствует последнему циклу в обеих программах. Как этот код: void decode(const char* key, int m, char* str) { int i; int n =...
176 просмотров
schedule 14.12.2023

Что такое эквивалент встроенных функций в сборке SSE2?
Я использую Fasm (сборка) и ищу инструкции по сборке SSE2, эквивалентные этим внутренним инструкциям: _mm_set1_epi8 _mm_cmpeq_epi8 _mm_movemask_epi8 Где их взять (веб-сайт, pdf...)?
572 просмотров
schedule 24.03.2023

Как преобразовать скалярный код двойной версии VDT Pade Exp fast_ex() приблизительно в SSE2?
Вот код, который я пытаюсь преобразовать: double версия VDT's Pade Exp fast_ex() приблизительно (вот старый репозиторий ресурс): inline double fast_exp(double initial_x){ double x = initial_x; double...
215 просмотров
schedule 31.03.2022

Почему AVX2 и SSE2 побитовые операторы ИЛИ не быстрее, чем простой | оператор?
Я пытаюсь ускорить побитовую операцию ИЛИ для очень длинных двоичных векторов, используя 32-битные целые числа. В этом примере мы можем предположить, что nwords — это количество слов, кратное 4 и 8. Следовательно, нет напоминания о цикле. Этот...
256 просмотров
schedule 18.07.2023

задержка для 'pcmpeqb' - память против регистра xmm
у меня есть эти 2 варианта: Опция 1: loop: ... movdqu xmm0, [rax] pcmpeqb xmm0, [.zero_table] ... ... align 16 .zero_table: DQ 0, 0 вариант 2: pxor xmm1, xmm1 loop: ... movdqu xmm0, [rax] pcmpeqb xmm0,...
130 просмотров

Можно ли использовать встроенные функции _mm_store_si128/_mm_load_si128 для реализации 128-битного атомарного типа?
Если я хочу реализовать 128-битный атомарный тип на x64, могу ли я использовать _mm_store_si128 и _mm_load_si128 , чтобы избежать cmpxchg16b для расслабленных load и store ? (Если нужно, могу предположить, что нужны только load и store ,...
148 просмотров
schedule 20.10.2022

Сдвиг влево (массива float32) с AVX2 и заполнение нулем
Я уже некоторое время использую следующий "трюк" в коде C с SSE2 для чисел с плавающей запятой одинарной точности: static inline __m128 SSEI_m128shift(__m128 data) { return (__m128)_mm_srli_si128(_mm_castps_si128(data), 4); } Для таких...
69 просмотров
schedule 03.04.2022

Как вы делаете знаковое 32-битное расширяющее умножение на SSE2?
Этот вопрос возник при рассмотрении предложения WebAssembly SIMD для расширенного умножения. Для поддержки старого оборудования нам необходимо поддерживать SSE2, а единственная операция векторного умножения для 32-битных целых чисел — pmuludq ....
108 просмотров
schedule 08.04.2022

Как лучше эмулировать логическое значение _mm_slli_si128 (128-битный битовый сдвиг), а не _mm_bslli_si128
Просматривая руководство по внутренним компонентам, я увидел эту инструкцию. Глядя на шаблон именования, смысл должен быть ясен: Сдвиг 128-битного регистра влево на фиксированное число бит, но это не так. На самом деле он сдвигается на фиксированное...
211 просмотров
schedule 28.10.2022

_mm_stream_si128 на 2000% медленнее, чем _mm_store_si128
Я писал код C для создания генератора случайных чисел и использовал следующий код: // header typedef struct { uint64_t values[2]; } fy5z_state_t; fy5z_state_t fy5z_seed(uint64_t seed_value); uint64_t fy5z_generate(fy5z_state_t* state); //...
40 просмотров
schedule 27.11.2022