GCC i Clang mają rozszerzenia __int128_t
i __uint128_t
dla 128-bitowej arytmetyki liczb całkowitych.128-bitowe liczby całkowite obsługujące +, -, *,/i% w kompilatorze Intel C?
I was hopeful że __m128i
dałby coś podobnego dla Intel kompilatora C, ale (jeśli to w ogóle możliwe), to wygląda mi na to, że muszę napisać wyraźnej funkcji SSE2 wzywa, aby wykorzystać __m128i
, zamiast używać „zbudowany -w "operatorach takich jak +
, -
, *
, i %
. Miałem nadzieję zrobić coś takiego (nie działa):
#if defined(__INTEL_COMPILER) && defined(__SSE2__)
#include "xmmintrin.h"
typedef __u128 uint128_t;
#elif defined (__GNUC__)
typedef __uint128_t uint128_t;
#else
#error For 128-bit arithmetic we need GCC or ICC, or uint128_t
#endif
Czy istnieje 128-bitowego całkowitą z operatorami +
, -
, *
, /
i %
gdzieś zakopane w MCK?
Używam ICC (ICC) 12.0.0 20101006, ale byłbym zainteresowany jakąkolwiek wersją ICC. Byłbym także zainteresowany innymi kompilatorami C dla linuxa wspierającego to. –
Odpowiedź na to prawie na pewno "nie". Właśnie przekierowałem się na forum programistów Intel (http://software.intel.com/en-us/forums/topic/392619). –
MMX, SSE i ich następcy mają być używane dla wielu wartości naraz, a nie dla numeru 128-bitowego. Nie sądzę, że istnieje 128-bitowa instrukcja matematyczna w 256-bitowym AVX/AVX2 lub nawet w AVX-512 w przyszłości. Jeśli potrzebujesz 128-bitowej matematyki, skorzystaj z biblioteki lub zbuduj własną –