4109832.c   [plain text]


/* APPLE LOCAL file Radar 4109832 */
/* { dg-do run { target "i?86-*-darwin*" } } */

#include <xmmintrin.h>

extern void abort(void);

int main(int argc, char **argv) {
	__m128 x1,x2,x3,x4;
	float f[16];
	int i;

	x1 = _mm_setr_ps(1.0,2.0,3.0,4.0);
	x2 = _mm_setr_ps(5.0,6.0,7.0,8.0);
	x3 = _mm_setr_ps(9.0,10.0,11.0,12.0);
	x4 = _mm_setr_ps(13.0,14.0,15.0,16.0);

	_mm_storeu_ps(&f[0], x1);
	_mm_storeu_ps(&f[4], x2);
	_mm_storeu_ps(&f[8], x3);
	_mm_storeu_ps(&f[12], x4);

        _MM_TRANSPOSE4_PS (x1,x2,x3,x4);

        _mm_storeu_ps(&f[0], x1);
        _mm_storeu_ps(&f[4], x2);
        _mm_storeu_ps(&f[8], x3);
        _mm_storeu_ps(&f[12], x4);

        if (!(f[0] == 1.0 && f[1] == 5.0 && f[2] == 9.0 && f[3] == 13.0))
            abort();

	return 0;
}