xref: /openbsd-src/regress/misc/sse2/foo/foo.c (revision b790c7af8c7301fb2d28918afd9b8d252b6f2ec0)
18d203d50Skettenis #include <emmintrin.h>
28d203d50Skettenis #include <pthread.h>
38d203d50Skettenis 
4*b790c7afSkettenis void foo_init(void) __attribute__((constructor));
5*b790c7afSkettenis void foo_fini(void) __attribute__((destructor));
68d203d50Skettenis 
78d203d50Skettenis void *
foo(void * arg)88d203d50Skettenis foo(void *arg)
98d203d50Skettenis {
108d203d50Skettenis 	__m128i xmm_alpha;
118d203d50Skettenis 
128d203d50Skettenis 	if ((((unsigned long)&xmm_alpha) & 15) != 0)
138d203d50Skettenis 		exit(1);
148d203d50Skettenis }
158d203d50Skettenis 
168d203d50Skettenis void
foo_init(void)17*b790c7afSkettenis foo_init(void)
18*b790c7afSkettenis {
19*b790c7afSkettenis 	foo(NULL);
20*b790c7afSkettenis }
21*b790c7afSkettenis 
22*b790c7afSkettenis void
foo_fini(void)23*b790c7afSkettenis foo_fini(void)
248d203d50Skettenis {
258d203d50Skettenis 	foo(NULL);
268d203d50Skettenis }
278d203d50Skettenis 
288d203d50Skettenis int
main(void)298d203d50Skettenis main(void)
308d203d50Skettenis {
318d203d50Skettenis 	pthread_t thread;
328d203d50Skettenis 
338d203d50Skettenis 	foo(NULL);
348d203d50Skettenis 	pthread_create(&thread, NULL, foo, NULL);
358d203d50Skettenis 	return 0;
368d203d50Skettenis }
37