Sendikanın hizalaması iyi olmalı, ancak Windows durumunda 32 bit bileşenlere doğrudan erişebilirsiniz. xmmintrin.h
(DirectXMath
) Gönderen:
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;
Gördüğünüz gibi, orada 4 yüzer var. Uber paranoyak olmak istiyorsanız, muhtemelen aynı hizalama özelliklerini tanımlayabilirsiniz ve hiçbir şeyin kırılmayacağından emin olabilirsiniz. Gördüğüm kadarıyla, ve, cevabınızda MSDN'den bahsettiğinize göre, gitmek için iyi olmalısınız. SSE uyumlu bir şeyler olduğunu biliyorsanız, hem sendika hem de doğrudan erişilmesi gerekir. Windows'un, tanımları nasıl yaptığı ve kendini nasıl çözdüğü konusunda bir fikir edinebilmek için DirectXMath üstbilgilerinin etrafından dolaşabilirsiniz: derleme zamanında hangi bilgi ve becerilere sahip olduklarına bağlı olarak birkaç makro tanımlayabilirler.
DÜZENLEME: R.MartinhoFernandes'ın yorumlarda söylediği gibi, doğrudan erişim, bir sendikada yeniden tanımlamaktan çok daha az baş ağrısıdır.
Hayır, hizalama bir sorun değil. Birlik, tüm üyelerinin doğru çalışması için gereken her türlü düzenlemeye sahip olacaktır. –
Ayrıca en azından Visual Studio'da, __m128 sse; 'sse.m128_f32 [0]', 'sse.m128_f32 [1]', 'sse.m128_f32 [2]' bileşenlerini alabileceğinizi de unutmayın. sse.m128_f32 [3] ', bu yüzden bu numaraya gerek yok. –
@ R.MartinhoFernandes ve gcc için? –