MMX Programming, part 2

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,577
4,492
75
The thread on SIMD and MMX programming got me wanting to try MMX, SSE2, and intrinsics. So far I'm only working with MMX (on a processor that doesn't support SSE2), and I have two compiler errors I can't get rid of.

The idea is to have a C string, and load parts of it into MMX registers. First of all, I assume that MMX can't read misaligned quadwords (or can't read them efficiently). But when I do:

static __declspec(align(8)) // Align arrays by 8
unsigned char buf[96];

I consistently get:

warning: `align' attribute directive ignored

That almost exactly matches some code I found online, so I'm stumped.

After that, I need to read an aligned chunk of 8 bytes at once. The only example code I have is for SSE2, which uses the _mm_load_si128 instruction. But there is no _mm_load_si64 instruction that I can find, and everything else I try reports:

error: can't convert value to a vector
error: can't convert between vector values of different size

Any ideas?

Thanks!
 

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,577
4,492
75
gcc (GCC) 3.4.4 (cygming special) (gdc 0.12, using dmd 0.125)
and
gcc (GCC) 3.4.5 (mingw-vista special r3)
and
gcc (4.3.2-tdm-2 mingw32) 4.3.2

All three give at least the align warning and "can't convert value to a vector".

I suppose the next question is what options I'm using: -msse -O3 -Wall
and what header files I included:
#include <stdio.h>
#include <string.h>
#include <xmmintrin.h>

(I'm using _mm_movemask_pi8 elsewhere, which is why it's xmmintrin.h.)
 

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,577
4,492
75
OK, I resolved the vector conversion problem, I think, with this macro:
#define ToVectorMem(x) (*((__m64*)&(x)))

I was trying to copy something from http://www.agner.org/optimize/ but I needed an extra *.

Does MMX alignment not matter, so it's not available with MMX-level intrinsics?
 
sale-70-410-exam    | Exam-200-125-pdf    | we-sale-70-410-exam    | hot-sale-70-410-exam    | Latest-exam-700-603-Dumps    | Dumps-98-363-exams-date    | Certs-200-125-date    | Dumps-300-075-exams-date    | hot-sale-book-C8010-726-book    | Hot-Sale-200-310-Exam    | Exam-Description-200-310-dumps?    | hot-sale-book-200-125-book    | Latest-Updated-300-209-Exam    | Dumps-210-260-exams-date    | Download-200-125-Exam-PDF    | Exam-Description-300-101-dumps    | Certs-300-101-date    | Hot-Sale-300-075-Exam    | Latest-exam-200-125-Dumps    | Exam-Description-200-125-dumps    | Latest-Updated-300-075-Exam    | hot-sale-book-210-260-book    | Dumps-200-901-exams-date    | Certs-200-901-date    | Latest-exam-1Z0-062-Dumps    | Hot-Sale-1Z0-062-Exam    | Certs-CSSLP-date    | 100%-Pass-70-383-Exams    | Latest-JN0-360-real-exam-questions    | 100%-Pass-4A0-100-Real-Exam-Questions    | Dumps-300-135-exams-date    | Passed-200-105-Tech-Exams    | Latest-Updated-200-310-Exam    | Download-300-070-Exam-PDF    | Hot-Sale-JN0-360-Exam    | 100%-Pass-JN0-360-Exams    | 100%-Pass-JN0-360-Real-Exam-Questions    | Dumps-JN0-360-exams-date    | Exam-Description-1Z0-876-dumps    | Latest-exam-1Z0-876-Dumps    | Dumps-HPE0-Y53-exams-date    | 2017-Latest-HPE0-Y53-Exam    | 100%-Pass-HPE0-Y53-Real-Exam-Questions    | Pass-4A0-100-Exam    | Latest-4A0-100-Questions    | Dumps-98-365-exams-date    | 2017-Latest-98-365-Exam    | 100%-Pass-VCS-254-Exams    | 2017-Latest-VCS-273-Exam    | Dumps-200-355-exams-date    | 2017-Latest-300-320-Exam    | Pass-300-101-Exam    | 100%-Pass-300-115-Exams    |
http://www.portvapes.co.uk/    | http://www.portvapes.co.uk/    |