노동 조합의 정렬은 괜찮지 만 Windows의 경우 32 비트 구성 요소에 직접 액세스 할 수 있습니다. xmmintrin.h
(DirectXMath
)에서 :
typedef union __declspec(intrin_type) _CRT_ALIGN(16) __m128 {
float m128_f32[4];
unsigned __int64 m128_u64[2];
__int8 m128_i8[16];
__int16 m128_i16[8];
__int32 m128_i32[4];
__int64 m128_i64[2];
unsigned __int8 m128_u8[16];
unsigned __int16 m128_u16[8];
unsigned __int32 m128_u32[4];
} __m128;
당신이 볼 수 있듯이, 거기에 4 수레가있다. 편집증에 동조하기를 원한다면, 아마 같은 정렬 맞춤법 등을 정의하여 아무 것도 깨지지 않도록 할 수 있습니다. 지금까지 내가 볼 수있는 한, 당신이 대답에 MSDN을 언급했다면, 당신은 모두 잘해야합니다. 당신이 SSE와 호환되는 것들을 알고 있다면 노동 조합과 그것을 직접 액세스하는 것이 효과가있다. DirectXMath 헤더를 중심으로 Windows가 어떻게 정의하고 논쟁하는지에 대한 느낌을 얻을 수 있습니다. 즉, 컴파일 타임에 어떤 intrinsics와 기능이 있는지에 따라 몇 가지 매크로를 정의 할 수 있습니다.
편집 : R.MartinhoFernandes가 의견에서 말했듯이, 직접 액세스하는 것은 노조에서 재정의하는 것보다 덜 골치 거리가 될 것입니다.
아니요, 정렬은 문제가되지 않습니다. 노동 조합은 모든 회원국이 올바르게 일하기 위해 필요한 정렬을 갖습니다. –
적어도 Visual Studio에서는'sse.m128_f32 [0]','sse.m128_f32 [1]','sse.m128_f32 [2]','sse.m128_f32 [2]'를 사용하여'__m128 sse;'의 구성 요소를 얻을 수 있습니다. 'sse.m128_f32 [3]'이므로이 트릭이 필요 없습니다. –
@ R.MartinhoFernandes 및 gcc 용? –